{
	"openapi": "3.1.0",
	"info": {
		"title": "Notion API (Undocumented)",
		"version": "1.0.0",
		"description": "Internal/undocumented Notion API endpoints. These endpoints are not part of the public API and may change without notice. Do not rely on these for production integrations.",
		"termsOfService": "https://notion.notion.site/Terms-and-Privacy-28ffdd083dc3473e9c2da6ec011b58ac",
		"x-noIndex": true
	},
	"servers": [
		{
			"url": "https://api.notion.com"
		}
	],
	"security": [
		{
			"bearerAuth": []
		}
	],
	"tags": [
		{
			"name": "Internal",
			"description": "Internal/undocumented endpoints",
			"x-hidden": true
		}
	],
	"components": {
		"securitySchemes": {
			"bearerAuth": {
				"type": "http",
				"scheme": "bearer"
			},
			"basicAuth": {
				"type": "http",
				"scheme": "basic"
			}
		},
		"schemas": {
			"AdvancedFilter": {
				"description": "Groups filters with a logical operator (similar to parentheses).",
				"required": ["type", "operator", "filters"],
				"properties": {
					"type": {
						"description": "Selects the filter or filter-value variant.",
						"const": "group",
						"type": "string"
					},
					"operator": {
						"description": "Comparison or Boolean operation applied by this filter.",
						"enum": ["and", "or"],
						"type": "string"
					},
					"filters": {
						"description": "Child filters combined by the Boolean group operator.",
						"type": "array",
						"items": {
							"oneOf": [
								{
									"$ref": "#/components/schemas/PropertyFilter"
								},
								{
									"$ref": "#/components/schemas/AdvancedFilter"
								}
							]
						}
					}
				},
				"additionalProperties": false,
				"type": "object"
			},
			"ChartAggregation": {
				"oneOf": [
					{
						"required": ["aggregator"],
						"properties": {
							"aggregator": {
								"const": "count",
								"type": "string"
							},
							"property": {
								"description": "Exact data source property name to filter.",
								"type": "string"
							},
							"enforceMaxAggregationLimit": {
								"type": "boolean"
							}
						},
						"additionalProperties": false,
						"type": "object"
					},
					{
						"required": ["aggregator", "property"],
						"properties": {
							"aggregator": {
								"enum": [
									"count_values",
									"unique",
									"empty",
									"not_empty",
									"percent_empty",
									"percent_not_empty",
									"show_unique",
									"checked",
									"unchecked",
									"percent_checked",
									"percent_unchecked",
									"sum",
									"average",
									"median",
									"min",
									"max",
									"range",
									"earliest_date",
									"latest_date",
									"date_range"
								],
								"type": "string"
							},
							"property": {
								"description": "Exact data source property name to filter.",
								"type": "string"
							},
							"enforceMaxAggregationLimit": {
								"type": "boolean"
							}
						},
						"additionalProperties": false,
						"type": "object"
					},
					{
						"required": ["aggregator", "property"],
						"properties": {
							"aggregator": {
								"required": ["operator", "groupName"],
								"properties": {
									"operator": {
										"description": "Comparison or Boolean operation applied by this filter.",
										"enum": ["count_per_group", "percent_per_group"],
										"type": "string"
									},
									"groupName": {
										"type": "string"
									}
								},
								"additionalProperties": false,
								"type": "object"
							},
							"property": {
								"description": "Exact data source property name to filter.",
								"type": "string"
							},
							"enforceMaxAggregationLimit": {
								"type": "boolean"
							}
						},
						"additionalProperties": false,
						"type": "object"
					}
				]
			},
			"CheckboxFilter": {
				"description": "Property filter for checkbox properties.",
				"required": ["type", "property", "propertyType", "operator", "value"],
				"properties": {
					"type": {
						"description": "Selects the filter or filter-value variant.",
						"const": "property",
						"type": "string"
					},
					"property": {
						"description": "Exact data source property name to filter.",
						"type": "string"
					},
					"propertyType": {
						"description": "Notion property type used to select valid operators and value shapes.",
						"const": "checkbox",
						"type": "string"
					},
					"operator": {
						"description": "Comparison or Boolean operation applied by this filter.",
						"enum": ["checkbox_is", "checkbox_is_not"],
						"type": "string"
					},
					"value": {
						"description": "Literal or relative value used by the filter.",
						"required": ["type", "value"],
						"properties": {
							"type": {
								"description": "Selects the filter or filter-value variant.",
								"const": "exact",
								"type": "string"
							},
							"value": {
								"description": "Literal or relative value used by the filter.",
								"type": "boolean"
							}
						},
						"additionalProperties": false,
						"type": "object"
					}
				},
				"additionalProperties": false,
				"type": "object"
			},
			"DateFilter": {
				"description": "Property filter for date properties.",
				"oneOf": [
					{
						"required": [
							"type",
							"property",
							"propertyType",
							"operator",
							"value"
						],
						"properties": {
							"type": {
								"description": "Selects the filter or filter-value variant.",
								"const": "property",
								"type": "string"
							},
							"property": {
								"description": "Exact data source property name to filter.",
								"type": "string"
							},
							"propertyType": {
								"description": "Notion property type used to select valid operators and value shapes.",
								"enum": [
									"date",
									"created_time",
									"last_edited_time",
									"last_visited_time"
								],
								"type": "string"
							},
							"operator": {
								"description": "Comparison or Boolean operation applied by this filter.",
								"enum": [
									"date_is",
									"date_is_before",
									"date_is_after",
									"date_is_on_or_before",
									"date_is_on_or_after"
								],
								"type": "string"
							},
							"value": {
								"description": "Literal or relative value used by the filter.",
								"oneOf": [
									{
										"required": ["type", "value"],
										"properties": {
											"type": {
												"description": "Selects the filter or filter-value variant.",
												"const": "exact",
												"type": "string"
											},
											"value": {
												"description": "Literal or relative value used by the filter.",
												"type": "string"
											}
										},
										"additionalProperties": false,
										"type": "object"
									},
									{
										"required": ["type", "value"],
										"properties": {
											"type": {
												"description": "Selects the filter or filter-value variant.",
												"const": "relative",
												"type": "string"
											},
											"value": {
												"description": "Literal or relative value used by the filter.",
												"enum": [
													"today",
													"tomorrow",
													"yesterday",
													"one_week_ago",
													"one_week_from_now",
													"one_month_ago",
													"one_month_from_now"
												],
												"type": "string"
											}
										},
										"additionalProperties": false,
										"type": "object"
									}
								]
							},
							"use_end": {
								"description": "For a date property, compare its end date instead of its start date.",
								"type": "boolean"
							}
						},
						"additionalProperties": false,
						"type": "object"
					},
					{
						"required": [
							"type",
							"property",
							"propertyType",
							"operator",
							"value"
						],
						"properties": {
							"type": {
								"description": "Selects the filter or filter-value variant.",
								"const": "property",
								"type": "string"
							},
							"property": {
								"description": "Exact data source property name to filter.",
								"type": "string"
							},
							"propertyType": {
								"description": "Notion property type used to select valid operators and value shapes.",
								"enum": [
									"date",
									"created_time",
									"last_edited_time",
									"last_visited_time"
								],
								"type": "string"
							},
							"operator": {
								"description": "Comparison or Boolean operation applied by this filter.",
								"enum": ["date_is_within", "date_is_relative_to"],
								"type": "string"
							},
							"value": {
								"description": "Literal or relative value used by the filter.",
								"oneOf": [
									{
										"required": ["type", "value"],
										"properties": {
											"type": {
												"description": "Selects the filter or filter-value variant.",
												"const": "exact",
												"type": "string"
											},
											"value": {
												"description": "Literal or relative value used by the filter.",
												"required": ["type"],
												"properties": {
													"type": {
														"description": "Selects the filter or filter-value variant.",
														"const": "daterange",
														"type": "string"
													},
													"start_date": {
														"description": "ISO 8601 date or date-time at the start of the range.",
														"type": "string"
													},
													"end_date": {
														"description": "ISO 8601 date or date-time at the end of the range.",
														"type": "string"
													}
												},
												"additionalProperties": false,
												"type": "object"
											}
										},
										"additionalProperties": false,
										"type": "object"
									},
									{
										"required": ["type", "value", "direction", "unit", "count"],
										"properties": {
											"type": {
												"description": "Selects the filter or filter-value variant.",
												"const": "relative",
												"type": "string"
											},
											"value": {
												"description": "Literal or relative value used by the filter.",
												"const": "custom",
												"type": "string"
											},
											"direction": {
												"description": "Whether the custom range extends into the past or future.",
												"enum": ["past", "future"],
												"type": "string"
											},
											"unit": {
												"description": "Time unit used to measure a relative date range.",
												"enum": ["year", "month", "week", "day"],
												"type": "string"
											},
											"count": {
												"description": "Number of units in the custom relative range.",
												"type": "number"
											}
										},
										"additionalProperties": false,
										"type": "object"
									},
									{
										"required": ["type", "value", "unit"],
										"properties": {
											"type": {
												"description": "Selects the filter or filter-value variant.",
												"const": "relative",
												"type": "string"
											},
											"value": {
												"description": "Literal or relative value used by the filter.",
												"const": "surrounding",
												"type": "string"
											},
											"unit": {
												"description": "Time unit used to measure a relative date range.",
												"enum": ["year", "month", "week", "day"],
												"type": "string"
											}
										},
										"additionalProperties": false,
										"type": "object"
									},
									{
										"required": ["type", "value"],
										"properties": {
											"type": {
												"description": "Selects the filter or filter-value variant.",
												"const": "relative",
												"type": "string"
											},
											"value": {
												"description": "Literal or relative value used by the filter.",
												"enum": [
													"this_week",
													"the_past_week",
													"the_past_month",
													"the_past_year",
													"the_next_week",
													"the_next_month",
													"the_next_year"
												],
												"type": "string"
											}
										},
										"additionalProperties": false,
										"type": "object"
									}
								]
							},
							"use_end": {
								"description": "For a date property, compare its end date instead of its start date.",
								"type": "boolean"
							}
						},
						"additionalProperties": false,
						"type": "object"
					}
				]
			},
			"EmptyPropertyFilter": {
				"description": "Checks whether a property has any value.",
				"required": ["type", "property", "propertyType", "operator"],
				"properties": {
					"type": {
						"description": "Selects the filter or filter-value variant.",
						"const": "property",
						"type": "string"
					},
					"property": {
						"description": "Exact data source property name to filter.",
						"type": "string"
					},
					"propertyType": {
						"description": "Notion property type used to select valid operators and value shapes.",
						"enum": [
							"title",
							"text",
							"url",
							"email",
							"phone_number",
							"number",
							"auto_increment_id",
							"date",
							"created_time",
							"last_edited_time",
							"last_visited_time",
							"select",
							"multi_select",
							"relation",
							"file",
							"status",
							"person",
							"last_edited_by",
							"place"
						],
						"type": "string"
					},
					"operator": {
						"description": "Comparison or Boolean operation applied by this filter.",
						"enum": ["is_empty", "is_not_empty"],
						"type": "string"
					}
				},
				"additionalProperties": false,
				"type": "object"
			},
			"FormulaFilter": {
				"description": "Filter applied to a formula property.",
				"required": ["type", "property", "propertyType", "resultFilter"],
				"properties": {
					"type": {
						"description": "Selects the filter or filter-value variant.",
						"const": "property",
						"type": "string"
					},
					"property": {
						"description": "Exact data source property name to filter.",
						"type": "string"
					},
					"propertyType": {
						"description": "Notion property type used to select valid operators and value shapes.",
						"const": "formula",
						"type": "string"
					},
					"operator": {
						"description": "Comparison or Boolean operation applied by this filter.",
						"enum": ["any", "none", "every"],
						"default": "every",
						"type": "string"
					},
					"resultFilter": {
						"description": "Filter on the formula's result. The propertyType in the resultFilter should be the resultType of the formula.",
						"oneOf": [
							{
								"$ref": "#/components/schemas/EmptyPropertyFilter"
							},
							{
								"$ref": "#/components/schemas/TextFilter"
							},
							{
								"$ref": "#/components/schemas/NumberFilter"
							},
							{
								"$ref": "#/components/schemas/DateFilter"
							},
							{
								"$ref": "#/components/schemas/SelectFilter"
							},
							{
								"$ref": "#/components/schemas/MultiSelectFilter"
							},
							{
								"$ref": "#/components/schemas/CheckboxFilter"
							},
							{
								"$ref": "#/components/schemas/RelationFilter"
							},
							{
								"$ref": "#/components/schemas/StatusFilter"
							},
							{
								"$ref": "#/components/schemas/PersonFilter"
							},
							{
								"$ref": "#/components/schemas/VerificationFilter"
							}
						],
						"type": "object"
					}
				},
				"additionalProperties": false,
				"type": "object"
			},
			"GroupBy": {
				"description": "Defines how to group items in a view. For each group by, the property and its corresponding propertyType MUST come directly from the data source schema.",
				"oneOf": [
					{
						"$ref": "#/components/schemas/GroupByTextLike"
					},
					{
						"$ref": "#/components/schemas/GroupByNumber"
					},
					{
						"$ref": "#/components/schemas/GroupByDate"
					},
					{
						"$ref": "#/components/schemas/GroupBySelect"
					},
					{
						"$ref": "#/components/schemas/GroupByStatus"
					},
					{
						"$ref": "#/components/schemas/GroupByPerson"
					},
					{
						"$ref": "#/components/schemas/GroupByRelation"
					},
					{
						"$ref": "#/components/schemas/GroupByCheckbox"
					}
				]
			},
			"GroupByCheckbox": {
				"description": "Group by for checkbox properties.",
				"required": ["property", "propertyType", "sort"],
				"properties": {
					"property": {
						"description": "Exact data source property name to filter.",
						"type": "string"
					},
					"propertyType": {
						"description": "Notion property type used to select valid operators and value shapes.",
						"const": "checkbox",
						"type": "string"
					},
					"sort": {
						"required": ["type"],
						"properties": {
							"type": {
								"description": "Selects the filter or filter-value variant.",
								"const": "manual",
								"type": "string"
							}
						},
						"additionalProperties": false,
						"type": "object"
					},
					"hideEmptyGroups": {
						"type": "boolean"
					},
					"disableBoardColorColumns": {
						"type": "boolean"
					}
				},
				"additionalProperties": false,
				"type": "object"
			},
			"GroupByDate": {
				"description": "Group by for date and timestamp properties.",
				"required": ["property", "propertyType", "groupBy", "sort"],
				"properties": {
					"property": {
						"description": "Exact data source property name to filter.",
						"type": "string"
					},
					"propertyType": {
						"description": "Notion property type used to select valid operators and value shapes.",
						"enum": ["date", "created_time", "last_edited_time"],
						"type": "string"
					},
					"groupBy": {
						"enum": ["relative", "day", "week", "month", "year"],
						"type": "string"
					},
					"sort": {
						"oneOf": [
							{
								"required": ["type"],
								"properties": {
									"type": {
										"description": "Selects the filter or filter-value variant.",
										"const": "ascending",
										"type": "string"
									}
								},
								"additionalProperties": false,
								"type": "object"
							},
							{
								"required": ["type"],
								"properties": {
									"type": {
										"description": "Selects the filter or filter-value variant.",
										"const": "descending",
										"type": "string"
									}
								},
								"additionalProperties": false,
								"type": "object"
							}
						]
					},
					"hideEmptyGroups": {
						"type": "boolean"
					},
					"disableBoardColorColumns": {
						"type": "boolean"
					},
					"startDayOfWeek": {
						"enum": [0, 1],
						"type": "number"
					}
				},
				"additionalProperties": false,
				"type": "object"
			},
			"GroupByNumber": {
				"description": "Group by for number properties.",
				"required": [
					"property",
					"propertyType",
					"start",
					"end",
					"size",
					"sort"
				],
				"properties": {
					"property": {
						"description": "Exact data source property name to filter.",
						"type": "string"
					},
					"propertyType": {
						"description": "Notion property type used to select valid operators and value shapes.",
						"const": "number",
						"type": "string"
					},
					"start": {
						"type": "number"
					},
					"end": {
						"type": "number"
					},
					"size": {
						"type": "number"
					},
					"sort": {
						"oneOf": [
							{
								"required": ["type"],
								"properties": {
									"type": {
										"description": "Selects the filter or filter-value variant.",
										"const": "ascending",
										"type": "string"
									}
								},
								"additionalProperties": false,
								"type": "object"
							},
							{
								"required": ["type"],
								"properties": {
									"type": {
										"description": "Selects the filter or filter-value variant.",
										"const": "descending",
										"type": "string"
									}
								},
								"additionalProperties": false,
								"type": "object"
							}
						]
					},
					"groupBy": {
						"required": ["type"],
						"properties": {
							"type": {
								"description": "Selects the filter or filter-value variant.",
								"const": "unique",
								"type": "string"
							},
							"start": {
								"type": "number"
							},
							"end": {
								"type": "number"
							}
						},
						"additionalProperties": false,
						"type": "object"
					},
					"hideEmptyGroups": {
						"type": "boolean"
					},
					"disableBoardColorColumns": {
						"type": "boolean"
					}
				},
				"additionalProperties": false,
				"type": "object"
			},
			"GroupByPerson": {
				"description": "Group by for person properties.",
				"required": ["property", "propertyType", "sort"],
				"properties": {
					"property": {
						"description": "Exact data source property name to filter.",
						"type": "string"
					},
					"propertyType": {
						"description": "Notion property type used to select valid operators and value shapes.",
						"const": "person",
						"type": "string"
					},
					"sort": {
						"required": ["type"],
						"properties": {
							"type": {
								"description": "Selects the filter or filter-value variant.",
								"const": "manual",
								"type": "string"
							}
						},
						"additionalProperties": false,
						"type": "object"
					},
					"hideEmptyGroups": {
						"type": "boolean"
					},
					"disableBoardColorColumns": {
						"type": "boolean"
					}
				},
				"additionalProperties": false,
				"type": "object"
			},
			"GroupByRelation": {
				"description": "Group by for relation properties.",
				"required": ["property", "propertyType", "sort"],
				"properties": {
					"property": {
						"description": "Exact data source property name to filter.",
						"type": "string"
					},
					"propertyType": {
						"description": "Notion property type used to select valid operators and value shapes.",
						"const": "relation",
						"type": "string"
					},
					"sort": {
						"oneOf": [
							{
								"required": ["type"],
								"properties": {
									"type": {
										"description": "Selects the filter or filter-value variant.",
										"const": "manual",
										"type": "string"
									}
								},
								"additionalProperties": false,
								"type": "object"
							},
							{
								"required": ["type"],
								"properties": {
									"type": {
										"description": "Selects the filter or filter-value variant.",
										"const": "ascending",
										"type": "string"
									}
								},
								"additionalProperties": false,
								"type": "object"
							},
							{
								"required": ["type"],
								"properties": {
									"type": {
										"description": "Selects the filter or filter-value variant.",
										"const": "descending",
										"type": "string"
									}
								},
								"additionalProperties": false,
								"type": "object"
							}
						]
					},
					"hideEmptyGroups": {
						"type": "boolean"
					},
					"disableBoardColorColumns": {
						"type": "boolean"
					}
				},
				"additionalProperties": false,
				"type": "object"
			},
			"GroupBySelect": {
				"description": "Group by for select and multi_select properties.",
				"required": ["property", "propertyType", "sort"],
				"properties": {
					"property": {
						"description": "Exact data source property name to filter.",
						"type": "string"
					},
					"propertyType": {
						"description": "Notion property type used to select valid operators and value shapes.",
						"enum": ["select", "multi_select"],
						"type": "string"
					},
					"sort": {
						"oneOf": [
							{
								"required": ["type"],
								"properties": {
									"type": {
										"description": "Selects the filter or filter-value variant.",
										"const": "manual",
										"type": "string"
									}
								},
								"additionalProperties": false,
								"type": "object"
							},
							{
								"required": ["type"],
								"properties": {
									"type": {
										"description": "Selects the filter or filter-value variant.",
										"const": "ascending",
										"type": "string"
									}
								},
								"additionalProperties": false,
								"type": "object"
							},
							{
								"required": ["type"],
								"properties": {
									"type": {
										"description": "Selects the filter or filter-value variant.",
										"const": "descending",
										"type": "string"
									}
								},
								"additionalProperties": false,
								"type": "object"
							}
						]
					},
					"hideEmptyGroups": {
						"type": "boolean"
					},
					"disableBoardColorColumns": {
						"type": "boolean"
					}
				},
				"additionalProperties": false,
				"type": "object"
			},
			"GroupByStatus": {
				"description": "Group by for status properties.",
				"required": ["property", "propertyType", "groupBy", "sort"],
				"properties": {
					"property": {
						"description": "Exact data source property name to filter.",
						"type": "string"
					},
					"propertyType": {
						"description": "Notion property type used to select valid operators and value shapes.",
						"const": "status",
						"type": "string"
					},
					"groupBy": {
						"enum": ["group", "option"],
						"type": "string"
					},
					"sort": {
						"oneOf": [
							{
								"required": ["type"],
								"properties": {
									"type": {
										"description": "Selects the filter or filter-value variant.",
										"const": "manual",
										"type": "string"
									}
								},
								"additionalProperties": false,
								"type": "object"
							},
							{
								"required": ["type"],
								"properties": {
									"type": {
										"description": "Selects the filter or filter-value variant.",
										"const": "ascending",
										"type": "string"
									}
								},
								"additionalProperties": false,
								"type": "object"
							},
							{
								"required": ["type"],
								"properties": {
									"type": {
										"description": "Selects the filter or filter-value variant.",
										"const": "descending",
										"type": "string"
									}
								},
								"additionalProperties": false,
								"type": "object"
							}
						]
					},
					"hideEmptyGroups": {
						"type": "boolean"
					},
					"disableBoardColorColumns": {
						"type": "boolean"
					}
				},
				"additionalProperties": false,
				"type": "object"
			},
			"GroupByTextLike": {
				"description": "Group by for text-like properties",
				"required": ["property", "propertyType", "groupBy", "sort"],
				"properties": {
					"property": {
						"description": "Exact data source property name to filter.",
						"type": "string"
					},
					"propertyType": {
						"description": "Notion property type used to select valid operators and value shapes.",
						"enum": ["title", "text", "url", "email", "phone_number"],
						"type": "string"
					},
					"groupBy": {
						"enum": ["exact", "alphabet_prefix"],
						"type": "string"
					},
					"sort": {
						"oneOf": [
							{
								"required": ["type"],
								"properties": {
									"type": {
										"description": "Selects the filter or filter-value variant.",
										"const": "manual",
										"type": "string"
									}
								},
								"additionalProperties": false,
								"type": "object"
							},
							{
								"required": ["type"],
								"properties": {
									"type": {
										"description": "Selects the filter or filter-value variant.",
										"const": "ascending",
										"type": "string"
									}
								},
								"additionalProperties": false,
								"type": "object"
							},
							{
								"required": ["type"],
								"properties": {
									"type": {
										"description": "Selects the filter or filter-value variant.",
										"const": "descending",
										"type": "string"
									}
								},
								"additionalProperties": false,
								"type": "object"
							}
						]
					},
					"hideEmptyGroups": {
						"type": "boolean"
					},
					"disableBoardColorColumns": {
						"type": "boolean"
					}
				},
				"additionalProperties": false,
				"type": "object"
			},
			"MultiSelectFilter": {
				"description": "Property filter for multi-select properties.",
				"required": ["type", "property", "propertyType", "operator", "value"],
				"properties": {
					"type": {
						"description": "Selects the filter or filter-value variant.",
						"const": "property",
						"type": "string"
					},
					"property": {
						"description": "Exact data source property name to filter.",
						"type": "string"
					},
					"propertyType": {
						"description": "Notion property type used to select valid operators and value shapes.",
						"const": "multi_select",
						"type": "string"
					},
					"operator": {
						"description": "Comparison or Boolean operation applied by this filter.",
						"enum": ["enum_contains", "enum_does_not_contain"],
						"type": "string"
					},
					"value": {
						"description": "Literal or relative value used by the filter.",
						"oneOf": [
							{
								"required": ["type", "value"],
								"properties": {
									"type": {
										"description": "Selects the filter or filter-value variant.",
										"const": "exact",
										"type": "string"
									},
									"value": {
										"description": "Literal or relative value used by the filter.",
										"type": "string"
									}
								},
								"additionalProperties": false,
								"type": "object"
							},
							{
								"type": "array",
								"items": {
									"required": ["type", "value"],
									"properties": {
										"type": {
											"description": "Selects the filter or filter-value variant.",
											"const": "exact",
											"type": "string"
										},
										"value": {
											"description": "Literal or relative value used by the filter.",
											"type": "string"
										}
									},
									"additionalProperties": false,
									"type": "object"
								}
							}
						]
					}
				},
				"additionalProperties": false,
				"type": "object"
			},
			"NumberFilter": {
				"description": "Property filter for number properties.",
				"required": ["type", "property", "propertyType", "operator", "value"],
				"properties": {
					"type": {
						"description": "Selects the filter or filter-value variant.",
						"const": "property",
						"type": "string"
					},
					"property": {
						"description": "Exact data source property name to filter.",
						"type": "string"
					},
					"propertyType": {
						"description": "Notion property type used to select valid operators and value shapes.",
						"enum": ["number", "auto_increment_id"],
						"type": "string"
					},
					"operator": {
						"description": "Comparison or Boolean operation applied by this filter.",
						"enum": [
							"number_equals",
							"number_does_not_equal",
							"number_greater_than",
							"number_less_than",
							"number_greater_than_or_equal_to",
							"number_less_than_or_equal_to"
						],
						"type": "string"
					},
					"value": {
						"description": "Literal or relative value used by the filter.",
						"required": ["type", "value"],
						"properties": {
							"type": {
								"description": "Selects the filter or filter-value variant.",
								"const": "exact",
								"type": "string"
							},
							"value": {
								"description": "Literal or relative value used by the filter.",
								"type": "number"
							}
						},
						"additionalProperties": false,
						"type": "object"
					}
				},
				"additionalProperties": false,
				"type": "object"
			},
			"PersonFilter": {
				"description": "Property filter for person-like properties. Exact values use user://, bot://, organization_bot://, or space_permission_group:// URIs; relative values use me.",
				"required": ["type", "property", "propertyType", "operator", "value"],
				"properties": {
					"type": {
						"description": "Selects the filter or filter-value variant.",
						"const": "property",
						"type": "string"
					},
					"property": {
						"description": "Exact data source property name to filter.",
						"type": "string"
					},
					"propertyType": {
						"description": "Notion property type used to select valid operators and value shapes.",
						"enum": ["person", "created_by", "last_edited_by"],
						"type": "string"
					},
					"operator": {
						"description": "Comparison or Boolean operation applied by this filter.",
						"enum": ["person_contains", "person_does_not_contain"],
						"type": "string"
					},
					"value": {
						"description": "Literal or relative value used by the filter.",
						"oneOf": [
							{
								"oneOf": [
									{
										"required": ["type", "value"],
										"properties": {
											"type": {
												"description": "Selects the filter or filter-value variant.",
												"const": "exact",
												"type": "string"
											},
											"value": {
												"description": "Literal or relative value used by the filter.",
												"example": "user://3f2b25f3-0a52-4a90-8f0d-5a3f0e6c1d2e",
												"type": "string"
											}
										},
										"additionalProperties": false,
										"type": "object"
									},
									{
										"required": ["type", "value"],
										"properties": {
											"type": {
												"description": "Selects the filter or filter-value variant.",
												"const": "relative",
												"type": "string"
											},
											"value": {
												"description": "Literal or relative value used by the filter.",
												"const": "me",
												"type": "string"
											}
										},
										"additionalProperties": false,
										"type": "object"
									}
								]
							},
							{
								"type": "array",
								"items": {
									"oneOf": [
										{
											"required": ["type", "value"],
											"properties": {
												"type": {
													"description": "Selects the filter or filter-value variant.",
													"const": "exact",
													"type": "string"
												},
												"value": {
													"description": "Literal or relative value used by the filter.",
													"example": "user://3f2b25f3-0a52-4a90-8f0d-5a3f0e6c1d2e",
													"type": "string"
												}
											},
											"additionalProperties": false,
											"type": "object"
										},
										{
											"required": ["type", "value"],
											"properties": {
												"type": {
													"description": "Selects the filter or filter-value variant.",
													"const": "relative",
													"type": "string"
												},
												"value": {
													"description": "Literal or relative value used by the filter.",
													"const": "me",
													"type": "string"
												}
											},
											"additionalProperties": false,
											"type": "object"
										}
									]
								}
							}
						]
					}
				},
				"additionalProperties": false,
				"type": "object"
			},
			"PropertyFilter": {
				"description": "Filter applied to a single property.",
				"oneOf": [
					{
						"$ref": "#/components/schemas/EmptyPropertyFilter"
					},
					{
						"$ref": "#/components/schemas/TextFilter"
					},
					{
						"$ref": "#/components/schemas/NumberFilter"
					},
					{
						"$ref": "#/components/schemas/DateFilter"
					},
					{
						"$ref": "#/components/schemas/SelectFilter"
					},
					{
						"$ref": "#/components/schemas/MultiSelectFilter"
					},
					{
						"$ref": "#/components/schemas/CheckboxFilter"
					},
					{
						"$ref": "#/components/schemas/RelationFilter"
					},
					{
						"$ref": "#/components/schemas/StatusFilter"
					},
					{
						"$ref": "#/components/schemas/PersonFilter"
					},
					{
						"$ref": "#/components/schemas/VerificationFilter"
					},
					{
						"$ref": "#/components/schemas/FormulaFilter"
					},
					{
						"$ref": "#/components/schemas/RollupFilter"
					}
				]
			},
			"RelationFilter": {
				"description": "Property filter for relation properties.",
				"required": ["type", "property", "propertyType", "operator", "value"],
				"properties": {
					"type": {
						"description": "Selects the filter or filter-value variant.",
						"const": "property",
						"type": "string"
					},
					"property": {
						"description": "Exact data source property name to filter.",
						"type": "string"
					},
					"propertyType": {
						"description": "Notion property type used to select valid operators and value shapes.",
						"const": "relation",
						"type": "string"
					},
					"operator": {
						"description": "Comparison or Boolean operation applied by this filter.",
						"enum": ["relation_contains", "relation_does_not_contain"],
						"type": "string"
					},
					"value": {
						"description": "Literal or relative value used by the filter.",
						"oneOf": [
							{
								"required": ["type", "value"],
								"properties": {
									"type": {
										"description": "Selects the filter or filter-value variant.",
										"const": "exact",
										"type": "string"
									},
									"value": {
										"description": "Literal or relative value used by the filter.",
										"type": "string"
									}
								},
								"additionalProperties": false,
								"type": "object"
							},
							{
								"type": "array",
								"items": {
									"required": ["type", "value"],
									"properties": {
										"type": {
											"description": "Selects the filter or filter-value variant.",
											"const": "exact",
											"type": "string"
										},
										"value": {
											"description": "Literal or relative value used by the filter.",
											"type": "string"
										}
									},
									"additionalProperties": false,
									"type": "object"
								}
							}
						]
					}
				},
				"additionalProperties": false,
				"type": "object"
			},
			"RollupFilter": {
				"required": ["type", "property", "propertyType", "resultFilter"],
				"properties": {
					"type": {
						"description": "Selects the filter or filter-value variant.",
						"const": "property",
						"type": "string"
					},
					"property": {
						"description": "Exact data source property name to filter.",
						"type": "string"
					},
					"propertyType": {
						"description": "Notion property type used to select valid operators and value shapes.",
						"const": "rollup",
						"type": "string"
					},
					"operator": {
						"description": "Required for original or unique values. Omit for aggregated values.",
						"enum": ["any", "none", "every"],
						"type": "string"
					},
					"resultFilter": {
						"description": "Filter on the rollup result. Use the same property name as the outer filter.",
						"oneOf": [
							{
								"$ref": "#/components/schemas/EmptyPropertyFilter"
							},
							{
								"$ref": "#/components/schemas/TextFilter"
							},
							{
								"$ref": "#/components/schemas/NumberFilter"
							},
							{
								"$ref": "#/components/schemas/DateFilter"
							},
							{
								"$ref": "#/components/schemas/SelectFilter"
							},
							{
								"$ref": "#/components/schemas/MultiSelectFilter"
							},
							{
								"$ref": "#/components/schemas/CheckboxFilter"
							},
							{
								"$ref": "#/components/schemas/RelationFilter"
							},
							{
								"$ref": "#/components/schemas/StatusFilter"
							},
							{
								"$ref": "#/components/schemas/PersonFilter"
							},
							{
								"$ref": "#/components/schemas/VerificationFilter"
							}
						]
					}
				},
				"additionalProperties": false,
				"type": "object"
			},
			"SelectFilter": {
				"description": "Property filter for select properties by option name.",
				"required": ["type", "property", "propertyType", "operator", "value"],
				"properties": {
					"type": {
						"description": "Selects the filter or filter-value variant.",
						"const": "property",
						"type": "string"
					},
					"property": {
						"description": "Exact data source property name to filter.",
						"type": "string"
					},
					"propertyType": {
						"description": "Notion property type used to select valid operators and value shapes.",
						"const": "select",
						"type": "string"
					},
					"operator": {
						"description": "Comparison or Boolean operation applied by this filter.",
						"enum": ["enum_is", "enum_is_not"],
						"type": "string"
					},
					"value": {
						"description": "Literal or relative value used by the filter.",
						"oneOf": [
							{
								"required": ["type", "value"],
								"properties": {
									"type": {
										"description": "Selects the filter or filter-value variant.",
										"const": "exact",
										"type": "string"
									},
									"value": {
										"description": "Literal or relative value used by the filter.",
										"type": "string"
									}
								},
								"additionalProperties": false,
								"type": "object"
							},
							{
								"type": "array",
								"items": {
									"required": ["type", "value"],
									"properties": {
										"type": {
											"description": "Selects the filter or filter-value variant.",
											"const": "exact",
											"type": "string"
										},
										"value": {
											"description": "Literal or relative value used by the filter.",
											"type": "string"
										}
									},
									"additionalProperties": false,
									"type": "object"
								}
							}
						]
					}
				},
				"additionalProperties": false,
				"type": "object"
			},
			"Sort": {
				"description": "Defines how to sort items in a view.",
				"required": ["property", "direction"],
				"properties": {
					"property": {
						"description": "Exact data source property name to filter.",
						"type": "string"
					},
					"direction": {
						"enum": ["ascending", "descending"],
						"type": "string"
					}
				},
				"additionalProperties": false,
				"type": "object"
			},
			"StatusFilter": {
				"description": "Property filter for status properties by option name.",
				"required": ["type", "property", "propertyType", "operator", "value"],
				"properties": {
					"type": {
						"description": "Selects the filter or filter-value variant.",
						"const": "property",
						"type": "string"
					},
					"property": {
						"description": "Exact data source property name to filter.",
						"type": "string"
					},
					"propertyType": {
						"description": "Notion property type used to select valid operators and value shapes.",
						"const": "status",
						"type": "string"
					},
					"operator": {
						"description": "Comparison or Boolean operation applied by this filter.",
						"enum": ["status_is", "status_is_not"],
						"type": "string"
					},
					"value": {
						"description": "Literal or relative value used by the filter.",
						"oneOf": [
							{
								"required": ["type", "value"],
								"properties": {
									"type": {
										"description": "Selects the filter or filter-value variant.",
										"enum": ["is_group", "is_option"],
										"type": "string"
									},
									"value": {
										"description": "Literal or relative value used by the filter.",
										"type": "string"
									}
								},
								"additionalProperties": false,
								"type": "object"
							},
							{
								"type": "array",
								"items": {
									"required": ["type", "value"],
									"properties": {
										"type": {
											"description": "Selects the filter or filter-value variant.",
											"enum": ["is_group", "is_option"],
											"type": "string"
										},
										"value": {
											"description": "Literal or relative value used by the filter.",
											"type": "string"
										}
									},
									"additionalProperties": false,
									"type": "object"
								}
							}
						]
					}
				},
				"additionalProperties": false,
				"type": "object"
			},
			"TextFilter": {
				"description": "Property filter for text-like properties.",
				"required": ["type", "property", "propertyType", "operator", "value"],
				"properties": {
					"type": {
						"description": "Selects the filter or filter-value variant.",
						"const": "property",
						"type": "string"
					},
					"property": {
						"description": "Exact data source property name to filter.",
						"type": "string"
					},
					"propertyType": {
						"description": "Notion property type used to select valid operators and value shapes.",
						"enum": ["title", "text", "url", "email", "phone_number"],
						"type": "string"
					},
					"operator": {
						"description": "Comparison or Boolean operation applied by this filter.",
						"enum": [
							"string_is",
							"string_is_not",
							"string_contains",
							"string_does_not_contain",
							"string_starts_with",
							"string_ends_with"
						],
						"type": "string"
					},
					"value": {
						"description": "Literal or relative value used by the filter.",
						"required": ["type", "value"],
						"properties": {
							"type": {
								"description": "Selects the filter or filter-value variant.",
								"const": "exact",
								"type": "string"
							},
							"value": {
								"description": "Literal or relative value used by the filter.",
								"type": "string"
							}
						},
						"additionalProperties": false,
						"type": "object"
					}
				},
				"additionalProperties": false,
				"type": "object"
			},
			"VerificationFilter": {
				"description": "Property filter for page verification state.",
				"required": ["type", "property", "propertyType", "operator", "value"],
				"properties": {
					"type": {
						"description": "Selects the filter or filter-value variant.",
						"const": "property",
						"type": "string"
					},
					"property": {
						"description": "Exact data source property name to filter.",
						"type": "string"
					},
					"propertyType": {
						"description": "Notion property type used to select valid operators and value shapes.",
						"const": "verification",
						"type": "string"
					},
					"operator": {
						"description": "Comparison or Boolean operation applied by this filter.",
						"enum": ["verification_is", "verification_is_not"],
						"type": "string"
					},
					"value": {
						"description": "Literal or relative value used by the filter.",
						"oneOf": [
							{
								"required": ["type", "value"],
								"properties": {
									"type": {
										"description": "Selects the filter or filter-value variant.",
										"const": "exact",
										"type": "string"
									},
									"value": {
										"description": "Literal or relative value used by the filter.",
										"enum": ["verified", "expired", "none"],
										"type": "string"
									}
								},
								"additionalProperties": false,
								"type": "object"
							},
							{
								"type": "array",
								"items": {
									"required": ["type", "value"],
									"properties": {
										"type": {
											"description": "Selects the filter or filter-value variant.",
											"const": "exact",
											"type": "string"
										},
										"value": {
											"description": "Literal or relative value used by the filter.",
											"enum": ["verified", "expired", "none"],
											"type": "string"
										}
									},
									"additionalProperties": false,
									"type": "object"
								}
							}
						]
					}
				},
				"additionalProperties": false,
				"type": "object"
			},
			"agentIdParentForBlockBasedObjectResponse": {
				"type": "object",
				"properties": {
					"type": {
						"type": "string",
						"const": "agent_id",
						"description": "The parent type."
					},
					"agent_id": {
						"$ref": "#/components/schemas/idResponse",
						"description": "The ID of the parent agent."
					}
				},
				"additionalProperties": false,
				"required": ["type", "agent_id"]
			},
			"annotationRequest": {
				"type": "object",
				"properties": {
					"bold": {
						"type": "boolean",
						"description": "Whether the text is formatted as bold."
					},
					"italic": {
						"type": "boolean",
						"description": "Whether the text is formatted as italic."
					},
					"strikethrough": {
						"type": "boolean",
						"description": "Whether the text is formatted with a strikethrough."
					},
					"underline": {
						"type": "boolean",
						"description": "Whether the text is formatted with an underline."
					},
					"code": {
						"type": "boolean",
						"description": "Whether the text is formatted as code."
					},
					"color": {
						"$ref": "#/components/schemas/apiColor",
						"description": "The color of the text."
					}
				}
			},
			"annotationResponse": {
				"type": "object",
				"properties": {
					"bold": {
						"type": "boolean"
					},
					"italic": {
						"type": "boolean"
					},
					"strikethrough": {
						"type": "boolean"
					},
					"underline": {
						"type": "boolean"
					},
					"code": {
						"type": "boolean"
					},
					"color": {
						"$ref": "#/components/schemas/apiColor"
					}
				},
				"additionalProperties": false,
				"required": [
					"bold",
					"italic",
					"strikethrough",
					"underline",
					"code",
					"color"
				]
			},
			"apiColor": {
				"type": "string",
				"enum": [
					"default",
					"gray",
					"brown",
					"orange",
					"yellow",
					"green",
					"blue",
					"purple",
					"pink",
					"red",
					"default_background",
					"gray_background",
					"brown_background",
					"orange_background",
					"yellow_background",
					"green_background",
					"blue_background",
					"purple_background",
					"pink_background",
					"red_background"
				],
				"description": "One of: `default`, `gray`, `brown`, `orange`, `yellow`, `green`, `blue`, `purple`, `pink`, `red`, `default_background`, `gray_background`, `brown_background`, `orange_background`, `yellow_background`, `green_background`, `blue_background`, `purple_background`, `pink_background`, `red_background`"
			},
			"apiTranscriptionStatus": {
				"type": "string",
				"enum": [
					"transcription_not_started",
					"transcription_paused",
					"transcription_in_progress",
					"transcription_failed",
					"summary_in_progress",
					"notes_ready"
				]
			},
			"arrayBasedPropertyValueResponse": {
				"oneOf": [
					{
						"$ref": "#/components/schemas/titleArrayBasedPropertyValueResponse"
					},
					{
						"$ref": "#/components/schemas/richTextArrayBasedPropertyValueResponse"
					},
					{
						"$ref": "#/components/schemas/peopleArrayBasedPropertyValueResponse"
					},
					{
						"$ref": "#/components/schemas/relationArrayBasedPropertyValueResponse"
					}
				]
			},
			"arrayPartialRollupValueResponse": {
				"type": "object",
				"properties": {
					"type": {
						"type": "string",
						"const": "array",
						"description": "Always `array`"
					},
					"array": {
						"type": "array",
						"items": {
							"$ref": "#/components/schemas/simpleOrArrayPropertyValueResponse"
						},
						"maxItems": 100
					}
				},
				"required": ["type", "array"],
				"title": "Array"
			},
			"audioBlockObjectResponse": {
				"title": "Audio",
				"type": "object",
				"properties": {
					"type": {
						"type": "string",
						"const": "audio"
					},
					"audio": {
						"$ref": "#/components/schemas/mediaContentWithFileAndCaptionResponse"
					},
					"parent": {
						"$ref": "#/components/schemas/parentForBlockBasedObjectResponse"
					},
					"object": {
						"type": "string",
						"const": "block"
					},
					"id": {
						"type": "string",
						"format": "uuid"
					},
					"created_time": {
						"type": "string",
						"format": "date-time"
					},
					"created_by": {
						"$ref": "#/components/schemas/partialUserObjectResponse"
					},
					"last_edited_time": {
						"type": "string",
						"format": "date-time"
					},
					"last_edited_by": {
						"$ref": "#/components/schemas/partialUserObjectResponse"
					},
					"has_children": {
						"type": "boolean"
					},
					"in_trash": {
						"type": "boolean"
					}
				},
				"required": [
					"type",
					"audio",
					"parent",
					"object",
					"id",
					"created_time",
					"created_by",
					"last_edited_time",
					"last_edited_by",
					"has_children",
					"in_trash"
				]
			},
			"blockIdParentForBlockBasedObjectResponse": {
				"type": "object",
				"properties": {
					"type": {
						"type": "string",
						"const": "block_id",
						"description": "The parent type."
					},
					"block_id": {
						"$ref": "#/components/schemas/idResponse",
						"description": "The ID of the parent block."
					}
				},
				"additionalProperties": false,
				"required": ["type", "block_id"]
			},
			"blockObjectResponse": {
				"anyOf": [
					{
						"$ref": "#/components/schemas/paragraphBlockObjectResponse"
					},
					{
						"$ref": "#/components/schemas/heading1BlockObjectResponse"
					},
					{
						"$ref": "#/components/schemas/heading2BlockObjectResponse"
					},
					{
						"$ref": "#/components/schemas/heading3BlockObjectResponse"
					},
					{
						"$ref": "#/components/schemas/heading4BlockObjectResponse"
					},
					{
						"$ref": "#/components/schemas/bulletedListItemBlockObjectResponse"
					},
					{
						"$ref": "#/components/schemas/numberedListItemBlockObjectResponse"
					},
					{
						"$ref": "#/components/schemas/quoteBlockObjectResponse"
					},
					{
						"$ref": "#/components/schemas/toDoBlockObjectResponse"
					},
					{
						"$ref": "#/components/schemas/toggleBlockObjectResponse"
					},
					{
						"$ref": "#/components/schemas/templateBlockObjectResponse"
					},
					{
						"$ref": "#/components/schemas/syncedBlockBlockObjectResponse"
					},
					{
						"$ref": "#/components/schemas/childPageBlockObjectResponse"
					},
					{
						"$ref": "#/components/schemas/childDatabaseBlockObjectResponse"
					},
					{
						"$ref": "#/components/schemas/equationBlockObjectResponse"
					},
					{
						"$ref": "#/components/schemas/codeBlockObjectResponse"
					},
					{
						"$ref": "#/components/schemas/calloutBlockObjectResponse"
					},
					{
						"$ref": "#/components/schemas/dividerBlockObjectResponse"
					},
					{
						"$ref": "#/components/schemas/breadcrumbBlockObjectResponse"
					},
					{
						"$ref": "#/components/schemas/tableOfContentsBlockObjectResponse"
					},
					{
						"$ref": "#/components/schemas/tabBlockObjectResponse"
					},
					{
						"$ref": "#/components/schemas/columnListBlockObjectResponse"
					},
					{
						"$ref": "#/components/schemas/columnBlockObjectResponse"
					},
					{
						"$ref": "#/components/schemas/linkToPageBlockObjectResponse"
					},
					{
						"$ref": "#/components/schemas/tableBlockObjectResponse"
					},
					{
						"$ref": "#/components/schemas/tableRowBlockObjectResponse"
					},
					{
						"$ref": "#/components/schemas/meetingNotesBlockObjectResponse"
					},
					{
						"$ref": "#/components/schemas/embedBlockObjectResponse"
					},
					{
						"$ref": "#/components/schemas/bookmarkBlockObjectResponse"
					},
					{
						"$ref": "#/components/schemas/imageBlockObjectResponse"
					},
					{
						"$ref": "#/components/schemas/videoBlockObjectResponse"
					},
					{
						"$ref": "#/components/schemas/pdfBlockObjectResponse"
					},
					{
						"$ref": "#/components/schemas/fileBlockObjectResponse"
					},
					{
						"$ref": "#/components/schemas/audioBlockObjectResponse"
					},
					{
						"$ref": "#/components/schemas/linkPreviewBlockObjectResponse"
					},
					{
						"$ref": "#/components/schemas/unsupportedBlockObjectResponse"
					}
				]
			},
			"bookmarkBlockObjectResponse": {
				"title": "Bookmark",
				"type": "object",
				"properties": {
					"type": {
						"type": "string",
						"const": "bookmark"
					},
					"bookmark": {
						"$ref": "#/components/schemas/mediaContentWithUrlAndCaptionResponse"
					},
					"parent": {
						"$ref": "#/components/schemas/parentForBlockBasedObjectResponse"
					},
					"object": {
						"type": "string",
						"const": "block"
					},
					"id": {
						"type": "string",
						"format": "uuid"
					},
					"created_time": {
						"type": "string",
						"format": "date-time"
					},
					"created_by": {
						"$ref": "#/components/schemas/partialUserObjectResponse"
					},
					"last_edited_time": {
						"type": "string",
						"format": "date-time"
					},
					"last_edited_by": {
						"$ref": "#/components/schemas/partialUserObjectResponse"
					},
					"has_children": {
						"type": "boolean"
					},
					"in_trash": {
						"type": "boolean"
					}
				},
				"required": [
					"type",
					"bookmark",
					"parent",
					"object",
					"id",
					"created_time",
					"created_by",
					"last_edited_time",
					"last_edited_by",
					"has_children",
					"in_trash"
				]
			},
			"booleanFormulaPropertyResponse": {
				"title": "Boolean",
				"type": "object",
				"properties": {
					"type": {
						"type": "string",
						"const": "boolean"
					},
					"boolean": {
						"type": ["boolean", "null"]
					}
				},
				"required": ["type", "boolean"]
			},
			"booleanFormulaPropertyValueResponse": {
				"type": "object",
				"properties": {
					"type": {
						"type": "string",
						"const": "boolean",
						"description": "Always `boolean`"
					},
					"boolean": {
						"oneOf": [
							{
								"type": "boolean"
							},
							{
								"type": "null"
							}
						]
					}
				},
				"additionalProperties": false,
				"required": ["type", "boolean"],
				"title": "Boolean"
			},
			"botInfoResponse": {
				"type": "object",
				"properties": {
					"owner": {
						"oneOf": [
							{
								"type": "object",
								"properties": {
									"type": {
										"type": "string",
										"const": "user",
										"description": "Always `user`"
									},
									"user": {
										"oneOf": [
											{
												"type": "object",
												"properties": {
													"id": {
														"$ref": "#/components/schemas/idResponse",
														"description": "The ID of the user."
													},
													"object": {
														"type": "string",
														"const": "user",
														"description": "The user object type name."
													},
													"name": {
														"oneOf": [
															{
																"type": "string"
															},
															{
																"type": "null"
															}
														],
														"description": "The name of the user."
													},
													"avatar_url": {
														"oneOf": [
															{
																"type": "string"
															},
															{
																"type": "null"
															}
														],
														"description": "The avatar URL of the user."
													},
													"type": {
														"type": "string",
														"const": "person",
														"description": "The type of the user."
													},
													"person": {
														"type": "object",
														"properties": {
															"email": {
																"type": "string",
																"description": "The email of the person."
															},
															"email_verified": {
																"type": "boolean",
																"description": "Whether the person's email is verified."
															}
														},
														"additionalProperties": false,
														"description": "The person info of the user."
													}
												},
												"additionalProperties": false,
												"required": [
													"id",
													"object",
													"name",
													"avatar_url",
													"type",
													"person"
												]
											},
											{
												"$ref": "#/components/schemas/partialUserObjectResponse"
											}
										],
										"description": "Details about the owner of the bot, when the `type` of the owner is `user`. This means the bot is for a integration."
									}
								},
								"additionalProperties": false,
								"required": ["type", "user"],
								"title": "User"
							},
							{
								"type": "object",
								"properties": {
									"type": {
										"type": "string",
										"const": "workspace",
										"description": "Always `workspace`"
									},
									"workspace": {
										"type": "boolean",
										"const": true,
										"description": "Details about the owner of the bot, when the `type` of the owner is `workspace`. This means the bot is for an internal integration."
									}
								},
								"additionalProperties": false,
								"required": ["type", "workspace"],
								"title": "Workspace"
							}
						],
						"description": "Details about the owner of the bot."
					},
					"workspace_id": {
						"type": "string",
						"description": "The ID of the bot's workspace."
					},
					"workspace_limits": {
						"type": "object",
						"properties": {
							"max_file_upload_size_in_bytes": {
								"type": "integer",
								"minimum": 0,
								"description": "The maximum allowable size of a file upload, in bytes"
							}
						},
						"additionalProperties": false,
						"required": ["max_file_upload_size_in_bytes"],
						"description": "Limits and restrictions that apply to the bot's workspace"
					},
					"workspace_name": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						],
						"description": "The name of the bot's workspace."
					}
				},
				"additionalProperties": false,
				"required": [
					"owner",
					"workspace_id",
					"workspace_limits",
					"workspace_name"
				]
			},
			"botUserObjectResponse": {
				"type": "object",
				"properties": {
					"type": {
						"type": "string",
						"const": "bot",
						"description": "Indicates this user is a bot."
					},
					"bot": {
						"oneOf": [
							{
								"$ref": "#/components/schemas/emptyObject"
							},
							{
								"$ref": "#/components/schemas/botInfoResponse"
							}
						],
						"description": "Details about the bot, when the `type` of the user is `bot`."
					}
				},
				"required": ["type", "bot"],
				"title": "Bot"
			},
			"breadcrumbBlockObjectResponse": {
				"title": "Breadcrumb",
				"type": "object",
				"properties": {
					"type": {
						"type": "string",
						"const": "breadcrumb"
					},
					"breadcrumb": {
						"$ref": "#/components/schemas/emptyObject"
					},
					"parent": {
						"$ref": "#/components/schemas/parentForBlockBasedObjectResponse"
					},
					"object": {
						"type": "string",
						"const": "block"
					},
					"id": {
						"type": "string",
						"format": "uuid"
					},
					"created_time": {
						"type": "string",
						"format": "date-time"
					},
					"created_by": {
						"$ref": "#/components/schemas/partialUserObjectResponse"
					},
					"last_edited_time": {
						"type": "string",
						"format": "date-time"
					},
					"last_edited_by": {
						"$ref": "#/components/schemas/partialUserObjectResponse"
					},
					"has_children": {
						"type": "boolean"
					},
					"in_trash": {
						"type": "boolean"
					}
				},
				"required": [
					"type",
					"breadcrumb",
					"parent",
					"object",
					"id",
					"created_time",
					"created_by",
					"last_edited_time",
					"last_edited_by",
					"has_children",
					"in_trash"
				]
			},
			"bulletedListItemBlockObjectResponse": {
				"title": "Bulleted List Item",
				"type": "object",
				"properties": {
					"type": {
						"type": "string",
						"const": "bulleted_list_item"
					},
					"bulleted_list_item": {
						"$ref": "#/components/schemas/contentWithRichTextAndColorResponse"
					},
					"parent": {
						"$ref": "#/components/schemas/parentForBlockBasedObjectResponse"
					},
					"object": {
						"type": "string",
						"const": "block"
					},
					"id": {
						"type": "string",
						"format": "uuid"
					},
					"created_time": {
						"type": "string",
						"format": "date-time"
					},
					"created_by": {
						"$ref": "#/components/schemas/partialUserObjectResponse"
					},
					"last_edited_time": {
						"type": "string",
						"format": "date-time"
					},
					"last_edited_by": {
						"$ref": "#/components/schemas/partialUserObjectResponse"
					},
					"has_children": {
						"type": "boolean"
					},
					"in_trash": {
						"type": "boolean"
					}
				},
				"required": [
					"type",
					"bulleted_list_item",
					"parent",
					"object",
					"id",
					"created_time",
					"created_by",
					"last_edited_time",
					"last_edited_by",
					"has_children",
					"in_trash"
				]
			},
			"buttonPropertyItemObjectResponse": {
				"title": "Button",
				"type": "object",
				"properties": {
					"type": {
						"type": "string",
						"const": "button"
					},
					"button": {
						"$ref": "#/components/schemas/emptyObject"
					},
					"object": {
						"type": "string",
						"const": "property_item"
					},
					"id": {
						"type": "string"
					}
				},
				"required": ["type", "button", "object", "id"]
			},
			"buttonSimplePropertyValueResponse": {
				"type": "object",
				"properties": {
					"type": {
						"type": "string",
						"const": "button",
						"description": "Always `button`"
					},
					"button": {
						"$ref": "#/components/schemas/emptyObject"
					}
				},
				"additionalProperties": false,
				"required": ["type", "button"],
				"title": "Button"
			},
			"calloutBlockObjectResponse": {
				"title": "Callout",
				"type": "object",
				"properties": {
					"type": {
						"type": "string",
						"const": "callout"
					},
					"callout": {
						"type": "object",
						"properties": {
							"rich_text": {
								"type": "array",
								"items": {
									"$ref": "#/components/schemas/richTextItemResponse"
								},
								"maxItems": 100
							},
							"color": {
								"$ref": "#/components/schemas/apiColor"
							},
							"icon": {
								"anyOf": [
									{
										"$ref": "#/components/schemas/pageIconResponse"
									},
									{
										"type": "null"
									}
								]
							}
						},
						"required": ["rich_text", "color", "icon"]
					},
					"parent": {
						"$ref": "#/components/schemas/parentForBlockBasedObjectResponse"
					},
					"object": {
						"type": "string",
						"const": "block"
					},
					"id": {
						"type": "string",
						"format": "uuid"
					},
					"created_time": {
						"type": "string",
						"format": "date-time"
					},
					"created_by": {
						"$ref": "#/components/schemas/partialUserObjectResponse"
					},
					"last_edited_time": {
						"type": "string",
						"format": "date-time"
					},
					"last_edited_by": {
						"$ref": "#/components/schemas/partialUserObjectResponse"
					},
					"has_children": {
						"type": "boolean"
					},
					"in_trash": {
						"type": "boolean"
					}
				},
				"required": [
					"type",
					"callout",
					"parent",
					"object",
					"id",
					"created_time",
					"created_by",
					"last_edited_time",
					"last_edited_by",
					"has_children",
					"in_trash"
				]
			},
			"checkboxDatabasePropertyConfigResponse": {
				"type": "object",
				"properties": {
					"type": {
						"type": "string",
						"const": "checkbox",
						"description": "Always `checkbox`"
					},
					"checkbox": {
						"$ref": "#/components/schemas/emptyObject"
					}
				},
				"required": ["type", "checkbox"],
				"title": "Checkbox"
			},
			"checkboxPropertyItemObjectResponse": {
				"title": "Checkbox",
				"type": "object",
				"properties": {
					"type": {
						"type": "string",
						"const": "checkbox"
					},
					"checkbox": {
						"type": "boolean"
					},
					"object": {
						"type": "string",
						"const": "property_item"
					},
					"id": {
						"type": "string"
					}
				},
				"required": ["type", "checkbox", "object", "id"]
			},
			"checkboxSimplePropertyValueResponse": {
				"type": "object",
				"properties": {
					"type": {
						"type": "string",
						"const": "checkbox",
						"description": "Always `checkbox`"
					},
					"checkbox": {
						"type": "boolean"
					}
				},
				"additionalProperties": false,
				"required": ["type", "checkbox"],
				"title": "Checkbox"
			},
			"childDatabaseBlockObjectResponse": {
				"title": "Child Database",
				"type": "object",
				"properties": {
					"type": {
						"type": "string",
						"const": "child_database"
					},
					"child_database": {
						"$ref": "#/components/schemas/titleObjectResponse"
					},
					"parent": {
						"$ref": "#/components/schemas/parentForBlockBasedObjectResponse"
					},
					"object": {
						"type": "string",
						"const": "block"
					},
					"id": {
						"type": "string",
						"format": "uuid"
					},
					"created_time": {
						"type": "string",
						"format": "date-time"
					},
					"created_by": {
						"$ref": "#/components/schemas/partialUserObjectResponse"
					},
					"last_edited_time": {
						"type": "string",
						"format": "date-time"
					},
					"last_edited_by": {
						"$ref": "#/components/schemas/partialUserObjectResponse"
					},
					"has_children": {
						"type": "boolean"
					},
					"in_trash": {
						"type": "boolean"
					}
				},
				"required": [
					"type",
					"child_database",
					"parent",
					"object",
					"id",
					"created_time",
					"created_by",
					"last_edited_time",
					"last_edited_by",
					"has_children",
					"in_trash"
				]
			},
			"childPageBlockObjectResponse": {
				"title": "Child Page",
				"type": "object",
				"properties": {
					"type": {
						"type": "string",
						"const": "child_page"
					},
					"child_page": {
						"$ref": "#/components/schemas/titleObjectResponse"
					},
					"parent": {
						"$ref": "#/components/schemas/parentForBlockBasedObjectResponse"
					},
					"object": {
						"type": "string",
						"const": "block"
					},
					"id": {
						"type": "string",
						"format": "uuid"
					},
					"created_time": {
						"type": "string",
						"format": "date-time"
					},
					"created_by": {
						"$ref": "#/components/schemas/partialUserObjectResponse"
					},
					"last_edited_time": {
						"type": "string",
						"format": "date-time"
					},
					"last_edited_by": {
						"$ref": "#/components/schemas/partialUserObjectResponse"
					},
					"has_children": {
						"type": "boolean"
					},
					"in_trash": {
						"type": "boolean"
					}
				},
				"required": [
					"type",
					"child_page",
					"parent",
					"object",
					"id",
					"created_time",
					"created_by",
					"last_edited_time",
					"last_edited_by",
					"has_children",
					"in_trash"
				]
			},
			"codeBlockObjectResponse": {
				"title": "Code",
				"type": "object",
				"properties": {
					"type": {
						"type": "string",
						"const": "code"
					},
					"code": {
						"type": "object",
						"properties": {
							"rich_text": {
								"type": "array",
								"items": {
									"$ref": "#/components/schemas/richTextItemResponse"
								},
								"maxItems": 100
							},
							"caption": {
								"type": "array",
								"items": {
									"$ref": "#/components/schemas/richTextItemResponse"
								},
								"maxItems": 100
							},
							"language": {
								"$ref": "#/components/schemas/languageRequest"
							}
						},
						"required": ["rich_text", "caption", "language"]
					},
					"parent": {
						"$ref": "#/components/schemas/parentForBlockBasedObjectResponse"
					},
					"object": {
						"type": "string",
						"const": "block"
					},
					"id": {
						"type": "string",
						"format": "uuid"
					},
					"created_time": {
						"type": "string",
						"format": "date-time"
					},
					"created_by": {
						"$ref": "#/components/schemas/partialUserObjectResponse"
					},
					"last_edited_time": {
						"type": "string",
						"format": "date-time"
					},
					"last_edited_by": {
						"$ref": "#/components/schemas/partialUserObjectResponse"
					},
					"has_children": {
						"type": "boolean"
					},
					"in_trash": {
						"type": "boolean"
					}
				},
				"required": [
					"type",
					"code",
					"parent",
					"object",
					"id",
					"created_time",
					"created_by",
					"last_edited_time",
					"last_edited_by",
					"has_children",
					"in_trash"
				]
			},
			"columnBlockObjectResponse": {
				"title": "Column",
				"type": "object",
				"properties": {
					"type": {
						"type": "string",
						"const": "column"
					},
					"column": {
						"$ref": "#/components/schemas/columnResponse"
					},
					"parent": {
						"$ref": "#/components/schemas/parentForBlockBasedObjectResponse"
					},
					"object": {
						"type": "string",
						"const": "block"
					},
					"id": {
						"type": "string",
						"format": "uuid"
					},
					"created_time": {
						"type": "string",
						"format": "date-time"
					},
					"created_by": {
						"$ref": "#/components/schemas/partialUserObjectResponse"
					},
					"last_edited_time": {
						"type": "string",
						"format": "date-time"
					},
					"last_edited_by": {
						"$ref": "#/components/schemas/partialUserObjectResponse"
					},
					"has_children": {
						"type": "boolean"
					},
					"in_trash": {
						"type": "boolean"
					}
				},
				"required": [
					"type",
					"column",
					"parent",
					"object",
					"id",
					"created_time",
					"created_by",
					"last_edited_time",
					"last_edited_by",
					"has_children",
					"in_trash"
				]
			},
			"columnListBlockObjectResponse": {
				"title": "Column List",
				"type": "object",
				"properties": {
					"type": {
						"type": "string",
						"const": "column_list"
					},
					"column_list": {
						"$ref": "#/components/schemas/emptyObject"
					},
					"parent": {
						"$ref": "#/components/schemas/parentForBlockBasedObjectResponse"
					},
					"object": {
						"type": "string",
						"const": "block"
					},
					"id": {
						"type": "string",
						"format": "uuid"
					},
					"created_time": {
						"type": "string",
						"format": "date-time"
					},
					"created_by": {
						"$ref": "#/components/schemas/partialUserObjectResponse"
					},
					"last_edited_time": {
						"type": "string",
						"format": "date-time"
					},
					"last_edited_by": {
						"$ref": "#/components/schemas/partialUserObjectResponse"
					},
					"has_children": {
						"type": "boolean"
					},
					"in_trash": {
						"type": "boolean"
					}
				},
				"required": [
					"type",
					"column_list",
					"parent",
					"object",
					"id",
					"created_time",
					"created_by",
					"last_edited_time",
					"last_edited_by",
					"has_children",
					"in_trash"
				]
			},
			"columnResponse": {
				"type": "object",
				"properties": {
					"width_ratio": {
						"description": "Ratio between 0 and 1 of the width of this column relative to all columns in the list. If not provided, uses an equal width.",
						"examples": [0.5],
						"type": "number"
					}
				}
			},
			"contentWithRichTextAndColorAndListResponse": {
				"type": "object",
				"properties": {
					"rich_text": {
						"type": "array",
						"items": {
							"$ref": "#/components/schemas/richTextItemResponse"
						},
						"maxItems": 100
					},
					"color": {
						"$ref": "#/components/schemas/apiColor"
					},
					"list_start_index": {
						"type": "integer",
						"minimum": 1
					},
					"list_format": {
						"$ref": "#/components/schemas/numberedListFormat"
					}
				},
				"required": ["rich_text", "color"]
			},
			"contentWithRichTextAndColorResponse": {
				"type": "object",
				"properties": {
					"rich_text": {
						"type": "array",
						"items": {
							"$ref": "#/components/schemas/richTextItemResponse"
						},
						"maxItems": 100
					},
					"color": {
						"$ref": "#/components/schemas/apiColor"
					}
				},
				"required": ["rich_text", "color"]
			},
			"contentWithRichTextColorAndIconResponse": {
				"type": "object",
				"properties": {
					"rich_text": {
						"type": "array",
						"items": {
							"$ref": "#/components/schemas/richTextItemResponse"
						},
						"maxItems": 100
					},
					"color": {
						"$ref": "#/components/schemas/apiColor"
					},
					"icon": {
						"anyOf": [
							{
								"$ref": "#/components/schemas/pageIconResponse"
							},
							{
								"type": "null"
							}
						]
					}
				},
				"required": ["rich_text", "color", "icon"]
			},
			"contentWithTableResponse": {
				"type": "object",
				"properties": {
					"has_column_header": {
						"type": "boolean"
					},
					"has_row_header": {
						"type": "boolean"
					},
					"table_width": {
						"type": "integer",
						"minimum": 1
					}
				},
				"required": ["has_column_header", "has_row_header", "table_width"]
			},
			"contentWithTableRowResponse": {
				"type": "object",
				"properties": {
					"cells": {
						"type": "array",
						"items": {
							"type": "array",
							"items": {
								"$ref": "#/components/schemas/richTextItemResponse"
							},
							"maxItems": 100
						},
						"maxItems": 100
					}
				},
				"required": ["cells"]
			},
			"createdByDatabasePropertyConfigResponse": {
				"type": "object",
				"properties": {
					"type": {
						"type": "string",
						"const": "created_by",
						"description": "Always `created_by`"
					},
					"created_by": {
						"$ref": "#/components/schemas/emptyObject"
					}
				},
				"required": ["type", "created_by"],
				"title": "Created By"
			},
			"createdByPropertyItemObjectResponse": {
				"title": "Created By",
				"type": "object",
				"properties": {
					"type": {
						"type": "string",
						"const": "created_by"
					},
					"created_by": {
						"anyOf": [
							{
								"$ref": "#/components/schemas/partialUserObjectResponse"
							},
							{
								"$ref": "#/components/schemas/userObjectResponse"
							}
						]
					},
					"object": {
						"type": "string",
						"const": "property_item"
					},
					"id": {
						"type": "string"
					}
				},
				"required": ["type", "created_by", "object", "id"]
			},
			"createdBySimplePropertyValueResponse": {
				"type": "object",
				"properties": {
					"type": {
						"type": "string",
						"const": "created_by",
						"description": "Always `created_by`"
					},
					"created_by": {
						"$ref": "#/components/schemas/userValueResponse"
					}
				},
				"additionalProperties": false,
				"required": ["type", "created_by"],
				"title": "Created By"
			},
			"createdTimeDatabasePropertyConfigResponse": {
				"type": "object",
				"properties": {
					"type": {
						"type": "string",
						"const": "created_time",
						"description": "Always `created_time`"
					},
					"created_time": {
						"$ref": "#/components/schemas/emptyObject"
					}
				},
				"required": ["type", "created_time"],
				"title": "Created Time"
			},
			"createdTimePropertyItemObjectResponse": {
				"title": "Created Time",
				"type": "object",
				"properties": {
					"type": {
						"type": "string",
						"const": "created_time"
					},
					"created_time": {
						"type": "string",
						"format": "date-time"
					},
					"object": {
						"type": "string",
						"const": "property_item"
					},
					"id": {
						"type": "string"
					}
				},
				"required": ["type", "created_time", "object", "id"]
			},
			"createdTimeSimplePropertyValueResponse": {
				"type": "object",
				"properties": {
					"type": {
						"type": "string",
						"const": "created_time",
						"description": "Always `created_time`"
					},
					"created_time": {
						"type": "string",
						"format": "date-time"
					}
				},
				"additionalProperties": false,
				"required": ["type", "created_time"],
				"title": "Created Time"
			},
			"customEmojiPageIconRequest": {
				"type": "object",
				"properties": {
					"type": {
						"type": "string",
						"const": "custom_emoji",
						"description": "Always `custom_emoji`"
					},
					"custom_emoji": {
						"type": "object",
						"properties": {
							"id": {
								"$ref": "#/components/schemas/idRequest",
								"description": "The ID of the custom emoji."
							},
							"name": {
								"type": "string",
								"description": "The name of the custom emoji."
							},
							"url": {
								"type": "string",
								"description": "The URL of the custom emoji."
							}
						},
						"required": ["id"]
					}
				},
				"required": ["custom_emoji"],
				"title": "Custom Emoji"
			},
			"customEmojiPageIconResponse": {
				"type": "object",
				"properties": {
					"type": {
						"type": "string",
						"const": "custom_emoji",
						"description": "Type of icon. In this case, a custom emoji."
					},
					"custom_emoji": {
						"$ref": "#/components/schemas/customEmojiResponse",
						"description": "The custom emoji details for the icon."
					}
				},
				"additionalProperties": false,
				"required": ["type", "custom_emoji"],
				"title": "Custom Emoji"
			},
			"customEmojiResponse": {
				"type": "object",
				"properties": {
					"id": {
						"$ref": "#/components/schemas/idResponse",
						"description": "The ID of the custom emoji."
					},
					"name": {
						"type": "string",
						"description": "The name of the custom emoji."
					},
					"url": {
						"type": "string",
						"description": "The URL of the custom emoji."
					}
				},
				"additionalProperties": false,
				"required": ["id", "name", "url"]
			},
			"dataSourceObjectResponse": {
				"type": "object",
				"properties": {
					"object": {
						"type": "string",
						"const": "data_source",
						"description": "The data source object type name."
					},
					"id": {
						"$ref": "#/components/schemas/idResponse",
						"description": "The ID of the data source."
					},
					"title": {
						"type": "array",
						"items": {
							"$ref": "#/components/schemas/richTextItemResponse"
						},
						"maxItems": 100,
						"description": "The title of the data source."
					},
					"description": {
						"type": "array",
						"items": {
							"$ref": "#/components/schemas/richTextItemResponse"
						},
						"maxItems": 100,
						"description": "The description of the data source."
					},
					"parent": {
						"$ref": "#/components/schemas/parentOfDataSourceResponse",
						"description": "The parent of the data source."
					},
					"database_parent": {
						"$ref": "#/components/schemas/parentOfDatabaseResponse",
						"description": "The parent of the data source's containing database. This is typically a page, block, or workspace, but can be another database in the case of wikis."
					},
					"is_inline": {
						"type": "boolean",
						"description": "Whether the data source is inline."
					},
					"database_type": {
						"oneOf": [
							{
								"type": "string",
								"enum": [
									"tasks",
									"projects",
									"sprints",
									"docs",
									"wiki",
									"meetings",
									"meeting_notes",
									"skills",
									"github_prs"
								],
								"description": "One of: `tasks`, `projects`, `sprints`, `docs`, `wiki`, `meetings`, `meeting_notes`, `skills`, `github_prs`"
							},
							{
								"type": "null"
							}
						],
						"description": "The type of typed database this data source belongs to, or `null` for a regular data source."
					},
					"in_trash": {
						"type": "boolean",
						"description": "Whether the data source is in the trash."
					},
					"created_time": {
						"type": "string",
						"format": "date-time",
						"description": "The time when the data source was created."
					},
					"last_edited_time": {
						"type": "string",
						"format": "date-time",
						"description": "The time when the data source was last edited."
					},
					"created_by": {
						"$ref": "#/components/schemas/partialUserObjectResponse",
						"description": "The user who created the data source."
					},
					"last_edited_by": {
						"$ref": "#/components/schemas/partialUserObjectResponse",
						"description": "The user who last edited the data source."
					},
					"properties": {
						"type": "object",
						"additionalProperties": {
							"$ref": "#/components/schemas/databasePropertyConfigResponse"
						},
						"description": "The properties schema of the data source."
					},
					"icon": {
						"oneOf": [
							{
								"$ref": "#/components/schemas/pageIconResponse"
							},
							{
								"type": "null"
							}
						],
						"description": "The icon of the data source."
					},
					"cover": {
						"oneOf": [
							{
								"$ref": "#/components/schemas/pageCoverResponse"
							},
							{
								"type": "null"
							}
						],
						"description": "The cover of the data source."
					},
					"url": {
						"type": "string",
						"description": "The URL of the data source."
					},
					"public_url": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						],
						"description": "The public URL of the data source if it is publicly accessible."
					},
					"sync_metadata": {
						"type": "object",
						"properties": {
							"external_database_sync": {
								"type": "object",
								"properties": {
									"sync_id": {
										"$ref": "#/components/schemas/idResponse",
										"description": "The stored sync ID. This is not a credential."
									},
									"provider": {
										"type": "string",
										"enum": ["github", "jira", "salesforce"],
										"description": "The sync provider: github (GitHub), jira (Jira), or salesforce (Salesforce)."
									}
								},
								"additionalProperties": false,
								"required": ["sync_id", "provider"],
								"description": "Stored identity of an external database sync."
							},
							"external_collection_type": {
								"type": "string",
								"enum": ["Jira", "Salesforce"],
								"description": "The provider of a legacy synced data source: Jira or Salesforce. Values are case-sensitive."
							},
							"sync_id": {
								"$ref": "#/components/schemas/idResponse",
								"description": "The stored sync ID when provider details are unavailable. This is not a credential."
							},
							"sync_state": {
								"type": "object",
								"properties": {
									"syncing": {
										"oneOf": [
											{
												"type": "boolean"
											},
											{
												"type": "string",
												"const": "row_limit_exceeded",
												"description": "Always `row_limit_exceeded`"
											}
										],
										"description": "Stored legacy sync state: true means syncing, false means not syncing, and row_limit_exceeded means the row limit stopped syncing. False does not guarantee a successful sync."
									},
									"last_synced_at": {
										"type": "string",
										"format": "date-time",
										"description": "Stored legacy sync update time in UTC ISO 8601 format. This does not guarantee that all source changes have been imported."
									},
									"last_sync_checkpoint_at": {
										"type": "string",
										"format": "date-time",
										"description": "Stored legacy sync checkpoint time in UTC ISO 8601 format."
									},
									"last_sync_heartbeat_at": {
										"type": "string",
										"format": "date-time",
										"description": "Stored legacy sync heartbeat time in UTC ISO 8601 format."
									}
								},
								"additionalProperties": false,
								"required": ["syncing"],
								"description": "Stored state for a legacy synced data source. Missing or invalid timestamps are omitted. This is not a live health check."
							},
							"synced_collection_key": {
								"type": "string",
								"description": "Opaque, developer-defined collection key for a worker sync. It is not a globally unique ID or a credential. Worker status is not included."
							}
						},
						"additionalProperties": false,
						"description": "Stored sync metadata, included when listing or retrieving data sources."
					}
				},
				"additionalProperties": false,
				"required": [
					"object",
					"id",
					"title",
					"description",
					"parent",
					"database_parent",
					"is_inline",
					"database_type",
					"in_trash",
					"created_time",
					"last_edited_time",
					"created_by",
					"last_edited_by",
					"properties",
					"icon",
					"cover",
					"url",
					"public_url"
				]
			},
			"dataSourceParentResponse": {
				"type": "object",
				"properties": {
					"type": {
						"type": "string",
						"const": "data_source_id",
						"description": "The parent type."
					},
					"data_source_id": {
						"$ref": "#/components/schemas/idResponse",
						"description": "The ID of the parent data source."
					},
					"database_id": {
						"$ref": "#/components/schemas/idResponse",
						"description": "The ID of the data source's parent database."
					}
				},
				"additionalProperties": false,
				"required": ["type", "data_source_id", "database_id"]
			},
			"databaseParentResponse": {
				"type": "object",
				"properties": {
					"type": {
						"type": "string",
						"const": "database_id",
						"description": "The parent type."
					},
					"database_id": {
						"$ref": "#/components/schemas/idResponse",
						"description": "The ID of the parent database."
					}
				},
				"additionalProperties": false,
				"required": ["type", "database_id"]
			},
			"databasePropertyConfigResponse": {
				"allOf": [
					{
						"$ref": "#/components/schemas/databasePropertyConfigResponseCommon"
					},
					{
						"oneOf": [
							{
								"$ref": "#/components/schemas/numberDatabasePropertyConfigResponse"
							},
							{
								"$ref": "#/components/schemas/formulaDatabasePropertyConfigResponse"
							},
							{
								"$ref": "#/components/schemas/selectDatabasePropertyConfigResponse"
							},
							{
								"$ref": "#/components/schemas/multiSelectDatabasePropertyConfigResponse"
							},
							{
								"$ref": "#/components/schemas/statusDatabasePropertyConfigResponse"
							},
							{
								"$ref": "#/components/schemas/relationDatabasePropertyConfigResponse"
							},
							{
								"$ref": "#/components/schemas/rollupDatabasePropertyConfigResponse"
							},
							{
								"$ref": "#/components/schemas/uniqueIdDatabasePropertyConfigResponse"
							},
							{
								"$ref": "#/components/schemas/titleDatabasePropertyConfigResponse"
							},
							{
								"$ref": "#/components/schemas/richTextDatabasePropertyConfigResponse"
							},
							{
								"$ref": "#/components/schemas/urlDatabasePropertyConfigResponse"
							},
							{
								"$ref": "#/components/schemas/peopleDatabasePropertyConfigResponse"
							},
							{
								"$ref": "#/components/schemas/filesDatabasePropertyConfigResponse"
							},
							{
								"$ref": "#/components/schemas/emailDatabasePropertyConfigResponse"
							},
							{
								"$ref": "#/components/schemas/phoneNumberDatabasePropertyConfigResponse"
							},
							{
								"$ref": "#/components/schemas/dateDatabasePropertyConfigResponse"
							},
							{
								"$ref": "#/components/schemas/checkboxDatabasePropertyConfigResponse"
							},
							{
								"$ref": "#/components/schemas/createdByDatabasePropertyConfigResponse"
							},
							{
								"$ref": "#/components/schemas/createdTimeDatabasePropertyConfigResponse"
							},
							{
								"$ref": "#/components/schemas/lastEditedByDatabasePropertyConfigResponse"
							},
							{
								"$ref": "#/components/schemas/lastEditedTimeDatabasePropertyConfigResponse"
							}
						]
					}
				]
			},
			"databasePropertyConfigResponseCommon": {
				"type": "object",
				"properties": {
					"id": {
						"type": "string",
						"description": "The ID of the property."
					},
					"name": {
						"type": "string",
						"description": "The name of the property."
					},
					"description": {
						"oneOf": [
							{
								"$ref": "#/components/schemas/propertyDescriptionRequest"
							},
							{
								"type": "null"
							}
						],
						"description": "The description of the property."
					}
				},
				"additionalProperties": false,
				"required": ["id", "name", "description"]
			},
			"databasePropertyRelationConfigResponse": {
				"allOf": [
					{
						"$ref": "#/components/schemas/databasePropertyRelationConfigResponseCommon"
					},
					{
						"oneOf": [
							{
								"$ref": "#/components/schemas/singlePropertyDatabasePropertyRelationConfigResponse"
							},
							{
								"$ref": "#/components/schemas/dualPropertyDatabasePropertyRelationConfigResponse"
							}
						]
					}
				]
			},
			"databasePropertyRelationConfigResponseCommon": {
				"type": "object",
				"properties": {
					"database_id": {
						"$ref": "#/components/schemas/idResponse"
					},
					"data_source_id": {
						"$ref": "#/components/schemas/idResponse"
					},
					"limit": {
						"oneOf": [
							{
								"type": "integer",
								"minimum": 1
							},
							{
								"type": "null"
							}
						],
						"description": "The maximum number of pages each page can relate to, or null when there is no limit. Read-only."
					}
				},
				"additionalProperties": false,
				"required": ["database_id", "data_source_id", "limit"]
			},
			"dateDatabasePropertyConfigResponse": {
				"type": "object",
				"properties": {
					"type": {
						"type": "string",
						"const": "date",
						"description": "Always `date`"
					},
					"date": {
						"$ref": "#/components/schemas/emptyObject"
					}
				},
				"required": ["type", "date"],
				"title": "Date"
			},
			"dateFormulaPropertyResponse": {
				"title": "Date",
				"type": "object",
				"properties": {
					"type": {
						"type": "string",
						"const": "date"
					},
					"date": {
						"anyOf": [
							{
								"$ref": "#/components/schemas/dateResponse"
							},
							{
								"type": "null"
							}
						]
					}
				},
				"required": ["type", "date"]
			},
			"dateFormulaPropertyValueResponse": {
				"type": "object",
				"properties": {
					"type": {
						"type": "string",
						"const": "date",
						"description": "Always `date`"
					},
					"date": {
						"oneOf": [
							{
								"$ref": "#/components/schemas/dateResponse"
							},
							{
								"type": "null"
							}
						]
					}
				},
				"additionalProperties": false,
				"required": ["type", "date"],
				"title": "Date"
			},
			"datePartialRollupValueResponse": {
				"type": "object",
				"properties": {
					"type": {
						"type": "string",
						"const": "date",
						"description": "Always `date`"
					},
					"date": {
						"oneOf": [
							{
								"$ref": "#/components/schemas/dateResponse"
							},
							{
								"type": "null"
							}
						]
					}
				},
				"required": ["type", "date"],
				"title": "Date"
			},
			"datePropertyItemObjectResponse": {
				"title": "Date",
				"type": "object",
				"properties": {
					"type": {
						"type": "string",
						"const": "date"
					},
					"date": {
						"anyOf": [
							{
								"$ref": "#/components/schemas/dateResponse"
							},
							{
								"type": "null"
							}
						]
					},
					"object": {
						"type": "string",
						"const": "property_item"
					},
					"id": {
						"type": "string"
					}
				},
				"required": ["type", "date", "object", "id"]
			},
			"dateRequest": {
				"type": "object",
				"properties": {
					"start": {
						"type": "string",
						"format": "date",
						"description": "The start date of the date object."
					},
					"end": {
						"oneOf": [
							{
								"type": "string",
								"format": "date"
							},
							{
								"type": "null"
							}
						],
						"description": "The end date of the date object, if any."
					},
					"time_zone": {
						"oneOf": [
							{
								"$ref": "#/components/schemas/timeZoneRequest"
							},
							{
								"type": "null"
							}
						],
						"description": "The time zone of the date object, if any. E.g. America/Los_Angeles, Europe/London, etc."
					}
				},
				"additionalProperties": false,
				"required": ["start"]
			},
			"dateResponse": {
				"type": "object",
				"properties": {
					"start": {
						"type": "string",
						"format": "date",
						"description": "The start date of the date object."
					},
					"end": {
						"oneOf": [
							{
								"type": "string",
								"format": "date"
							},
							{
								"type": "null"
							}
						],
						"description": "The end date of the date object, if any."
					},
					"time_zone": {
						"oneOf": [
							{
								"$ref": "#/components/schemas/timeZoneRequest"
							},
							{
								"type": "null"
							}
						],
						"description": "The time zone of the date object."
					}
				},
				"additionalProperties": false,
				"required": ["start", "end", "time_zone"]
			},
			"dateSimplePropertyValueResponse": {
				"type": "object",
				"properties": {
					"type": {
						"type": "string",
						"const": "date",
						"description": "Always `date`"
					},
					"date": {
						"oneOf": [
							{
								"$ref": "#/components/schemas/dateResponse"
							},
							{
								"type": "null"
							}
						]
					}
				},
				"additionalProperties": false,
				"required": ["type", "date"],
				"title": "Date"
			},
			"dividerBlockObjectResponse": {
				"title": "Divider",
				"type": "object",
				"properties": {
					"type": {
						"type": "string",
						"const": "divider"
					},
					"divider": {
						"$ref": "#/components/schemas/emptyObject"
					},
					"parent": {
						"$ref": "#/components/schemas/parentForBlockBasedObjectResponse"
					},
					"object": {
						"type": "string",
						"const": "block"
					},
					"id": {
						"type": "string",
						"format": "uuid"
					},
					"created_time": {
						"type": "string",
						"format": "date-time"
					},
					"created_by": {
						"$ref": "#/components/schemas/partialUserObjectResponse"
					},
					"last_edited_time": {
						"type": "string",
						"format": "date-time"
					},
					"last_edited_by": {
						"$ref": "#/components/schemas/partialUserObjectResponse"
					},
					"has_children": {
						"type": "boolean"
					},
					"in_trash": {
						"type": "boolean"
					}
				},
				"required": [
					"type",
					"divider",
					"parent",
					"object",
					"id",
					"created_time",
					"created_by",
					"last_edited_time",
					"last_edited_by",
					"has_children",
					"in_trash"
				]
			},
			"dualPropertyDatabasePropertyRelationConfigResponse": {
				"type": "object",
				"properties": {
					"type": {
						"type": "string",
						"const": "dual_property",
						"description": "Always `dual_property`"
					},
					"dual_property": {
						"type": "object",
						"properties": {
							"synced_property_id": {
								"type": "string"
							},
							"synced_property_name": {
								"type": "string"
							}
						},
						"additionalProperties": false,
						"required": ["synced_property_id", "synced_property_name"]
					}
				},
				"required": ["dual_property"],
				"title": "Dual Property"
			},
			"emailDatabasePropertyConfigResponse": {
				"type": "object",
				"properties": {
					"type": {
						"type": "string",
						"const": "email",
						"description": "Always `email`"
					},
					"email": {
						"$ref": "#/components/schemas/emptyObject"
					}
				},
				"required": ["type", "email"],
				"title": "Email"
			},
			"emailPropertyItemObjectResponse": {
				"title": "Email",
				"type": "object",
				"properties": {
					"type": {
						"type": "string",
						"const": "email"
					},
					"email": {
						"type": ["string", "null"]
					},
					"object": {
						"type": "string",
						"const": "property_item"
					},
					"id": {
						"type": "string"
					}
				},
				"required": ["type", "email", "object", "id"]
			},
			"emailSimplePropertyValueResponse": {
				"type": "object",
				"properties": {
					"type": {
						"type": "string",
						"const": "email",
						"description": "Always `email`"
					},
					"email": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					}
				},
				"additionalProperties": false,
				"required": ["type", "email"],
				"title": "Email"
			},
			"embedBlockObjectResponse": {
				"title": "Embed",
				"type": "object",
				"properties": {
					"type": {
						"type": "string",
						"const": "embed"
					},
					"embed": {
						"$ref": "#/components/schemas/mediaContentWithUrlAndCaptionResponse"
					},
					"parent": {
						"$ref": "#/components/schemas/parentForBlockBasedObjectResponse"
					},
					"object": {
						"type": "string",
						"const": "block"
					},
					"id": {
						"type": "string",
						"format": "uuid"
					},
					"created_time": {
						"type": "string",
						"format": "date-time"
					},
					"created_by": {
						"$ref": "#/components/schemas/partialUserObjectResponse"
					},
					"last_edited_time": {
						"type": "string",
						"format": "date-time"
					},
					"last_edited_by": {
						"$ref": "#/components/schemas/partialUserObjectResponse"
					},
					"has_children": {
						"type": "boolean"
					},
					"in_trash": {
						"type": "boolean"
					}
				},
				"required": [
					"type",
					"embed",
					"parent",
					"object",
					"id",
					"created_time",
					"created_by",
					"last_edited_time",
					"last_edited_by",
					"has_children",
					"in_trash"
				]
			},
			"emojiPageIconRequest": {
				"type": "object",
				"properties": {
					"type": {
						"type": "string",
						"const": "emoji",
						"description": "Always `emoji`"
					},
					"emoji": {
						"$ref": "#/components/schemas/emojiRequest",
						"description": "An emoji character."
					}
				},
				"required": ["emoji"],
				"title": "Emoji"
			},
			"emojiPageIconResponse": {
				"type": "object",
				"properties": {
					"type": {
						"type": "string",
						"const": "emoji",
						"description": "Type of icon. In this case, an emoji."
					},
					"emoji": {
						"$ref": "#/components/schemas/emojiRequest",
						"description": "The emoji character used as the icon."
					}
				},
				"additionalProperties": false,
				"required": ["type", "emoji"],
				"title": "Emoji"
			},
			"emojiRequest": {
				"type": "string",
				"example": "😀"
			},
			"emptyObject": {
				"type": "object",
				"properties": {},
				"additionalProperties": false
			},
			"equationBlockObjectResponse": {
				"title": "Equation",
				"type": "object",
				"properties": {
					"type": {
						"type": "string",
						"const": "equation"
					},
					"equation": {
						"$ref": "#/components/schemas/expressionObjectResponse"
					},
					"parent": {
						"$ref": "#/components/schemas/parentForBlockBasedObjectResponse"
					},
					"object": {
						"type": "string",
						"const": "block"
					},
					"id": {
						"type": "string",
						"format": "uuid"
					},
					"created_time": {
						"type": "string",
						"format": "date-time"
					},
					"created_by": {
						"$ref": "#/components/schemas/partialUserObjectResponse"
					},
					"last_edited_time": {
						"type": "string",
						"format": "date-time"
					},
					"last_edited_by": {
						"$ref": "#/components/schemas/partialUserObjectResponse"
					},
					"has_children": {
						"type": "boolean"
					},
					"in_trash": {
						"type": "boolean"
					}
				},
				"required": [
					"type",
					"equation",
					"parent",
					"object",
					"id",
					"created_time",
					"created_by",
					"last_edited_time",
					"last_edited_by",
					"has_children",
					"in_trash"
				]
			},
			"equationRichTextItemRequest": {
				"type": "object",
				"properties": {
					"type": {
						"type": "string",
						"const": "equation",
						"description": "Always `equation`"
					},
					"equation": {
						"type": "object",
						"properties": {
							"expression": {
								"type": "string",
								"examples": ["e=mc^2"],
								"description": "A KaTeX compatible string."
							}
						},
						"required": ["expression"],
						"description": "Notion supports inline LaTeX equations as rich text objects with a type value of `equation`."
					}
				},
				"required": ["equation"],
				"title": "Equation"
			},
			"equationRichTextItemResponse": {
				"type": "object",
				"properties": {
					"type": {
						"type": "string",
						"const": "equation",
						"description": "Always `equation`"
					},
					"equation": {
						"type": "object",
						"properties": {
							"expression": {
								"type": "string",
								"examples": ["e=mc^2"],
								"description": "A KaTeX compatible string."
							}
						},
						"additionalProperties": false,
						"required": ["expression"],
						"description": "Notion supports inline LaTeX equations as rich text objects with a type value of `equation`."
					}
				},
				"required": ["type", "equation"],
				"title": "Equation"
			},
			"error_api_400": {
				"allOf": [
					{
						"$ref": "#/components/schemas/publicApiCommonErrorResponse"
					},
					{
						"type": "object",
						"properties": {
							"code": {
								"enum": [
									"invalid_json",
									"invalid_request_url",
									"invalid_request",
									"missing_version",
									"invalid_beta",
									"validation_error",
									"invalid_credit_limit"
								]
							},
							"status": {
								"const": 400
							}
						},
						"required": ["code", "status"],
						"additionalProperties": false
					}
				]
			},
			"error_api_401": {
				"allOf": [
					{
						"$ref": "#/components/schemas/publicApiCommonErrorResponse"
					},
					{
						"type": "object",
						"properties": {
							"code": {
								"enum": ["unauthorized"]
							},
							"status": {
								"const": 401
							}
						},
						"required": ["code", "status"],
						"additionalProperties": false
					}
				]
			},
			"error_api_403": {
				"oneOf": [
					{
						"allOf": [
							{
								"$ref": "#/components/schemas/publicApiCommonErrorResponse"
							},
							{
								"type": "object",
								"properties": {
									"code": {
										"enum": ["restricted_resource", "status_change_not_allowed"]
									},
									"status": {
										"const": 403
									}
								},
								"required": ["code", "status"],
								"additionalProperties": false
							}
						]
					},
					{
						"allOf": [
							{
								"$ref": "#/components/schemas/publicApiCommonErrorResponse"
							},
							{
								"type": "object",
								"properties": {
									"code": {
										"const": "workspace_credits_exhausted"
									},
									"status": {
										"const": 403
									},
									"additional_data": {
										"type": "object",
										"properties": {
											"tool_error_code": {
												"const": "workspace_credits_exhausted"
											},
											"tool_error_class": {
												"const": "entitlement_required"
											},
											"tool_error_retryable": {
												"const": "false"
											},
											"recovery_kind": {
												"enum": [
													"contact_workspace_owner",
													"open_workspace_credit_settings"
												],
												"description": "The recovery action selected by Notion for the caller."
											},
											"recovery_url": {
												"type": "string",
												"format": "uri",
												"description": "Present when recovery_kind directs the caller to a settings page."
											}
										},
										"required": [
											"tool_error_code",
											"tool_error_class",
											"tool_error_retryable",
											"recovery_kind"
										],
										"additionalProperties": {
											"oneOf": [
												{
													"type": "string"
												},
												{
													"type": "array",
													"items": {
														"type": "string"
													}
												}
											]
										}
									}
								},
								"required": ["code", "status", "additional_data"]
							}
						]
					},
					{
						"allOf": [
							{
								"$ref": "#/components/schemas/publicApiCommonErrorResponse"
							},
							{
								"type": "object",
								"properties": {
									"code": {
										"const": "agent_credit_limit_reached"
									},
									"status": {
										"const": 403
									},
									"additional_data": {
										"type": "object",
										"properties": {
											"tool_error_code": {
												"const": "agent_credit_limit_reached"
											},
											"tool_error_class": {
												"const": "entitlement_required"
											},
											"tool_error_retryable": {
												"const": "false"
											},
											"recovery_kind": {
												"enum": [
													"contact_workspace_owner",
													"none",
													"open_agent_settings",
													"request_agent_limit_increase",
													"request_pending"
												],
												"description": "The recovery action selected by Notion for the caller."
											},
											"recovery_url": {
												"type": "string",
												"format": "uri",
												"description": "Present when recovery_kind directs the caller to a settings page."
											}
										},
										"required": [
											"tool_error_code",
											"tool_error_class",
											"tool_error_retryable",
											"recovery_kind"
										],
										"additionalProperties": {
											"oneOf": [
												{
													"type": "string"
												},
												{
													"type": "array",
													"items": {
														"type": "string"
													}
												}
											]
										}
									}
								},
								"required": ["code", "status", "additional_data"]
							}
						]
					}
				]
			},
			"error_api_404": {
				"allOf": [
					{
						"$ref": "#/components/schemas/publicApiCommonErrorResponse"
					},
					{
						"type": "object",
						"properties": {
							"code": {
								"enum": ["object_not_found", "directory_not_found"]
							},
							"status": {
								"const": 404
							}
						},
						"required": ["code", "status"],
						"additionalProperties": false
					}
				]
			},
			"error_api_406": {
				"allOf": [
					{
						"$ref": "#/components/schemas/publicApiCommonErrorResponse"
					},
					{
						"type": "object",
						"properties": {
							"code": {
								"enum": ["row_limit_exceeded"]
							},
							"status": {
								"const": 406
							}
						},
						"required": ["code", "status"],
						"additionalProperties": false
					}
				]
			},
			"error_api_409": {
				"allOf": [
					{
						"$ref": "#/components/schemas/publicApiCommonErrorResponse"
					},
					{
						"type": "object",
						"properties": {
							"code": {
								"enum": [
									"conflict_error",
									"idempotency_key_reused",
									"agent_deleted"
								]
							},
							"status": {
								"const": 409
							}
						},
						"required": ["code", "status"],
						"additionalProperties": false
					}
				]
			},
			"error_api_429": {
				"allOf": [
					{
						"$ref": "#/components/schemas/publicApiCommonErrorResponse"
					},
					{
						"type": "object",
						"properties": {
							"code": {
								"enum": ["rate_limited"]
							},
							"status": {
								"const": 429
							}
						},
						"required": ["code", "status"],
						"additionalProperties": false
					}
				]
			},
			"error_api_500": {
				"allOf": [
					{
						"$ref": "#/components/schemas/publicApiCommonErrorResponse"
					},
					{
						"type": "object",
						"properties": {
							"code": {
								"enum": ["internal_server_error"]
							},
							"status": {
								"const": 500
							}
						},
						"required": ["code", "status"],
						"additionalProperties": false
					}
				]
			},
			"error_api_503": {
				"allOf": [
					{
						"$ref": "#/components/schemas/publicApiCommonErrorResponse"
					},
					{
						"type": "object",
						"properties": {
							"code": {
								"enum": ["service_unavailable"]
							},
							"status": {
								"const": 503
							}
						},
						"required": ["code", "status"],
						"additionalProperties": false
					}
				]
			},
			"error_api_504": {
				"allOf": [
					{
						"$ref": "#/components/schemas/publicApiCommonErrorResponse"
					},
					{
						"type": "object",
						"properties": {
							"code": {
								"enum": ["gateway_timeout"]
							},
							"status": {
								"const": 504
							}
						},
						"required": ["code", "status"],
						"additionalProperties": false
					}
				]
			},
			"error_api_529": {
				"allOf": [
					{
						"$ref": "#/components/schemas/publicApiCommonErrorResponse"
					},
					{
						"type": "object",
						"properties": {
							"code": {
								"enum": ["service_overload"]
							},
							"status": {
								"const": 529
							}
						},
						"required": ["code", "status"],
						"additionalProperties": false
					}
				]
			},
			"error_oauth_400": {
				"allOf": [
					{
						"$ref": "#/components/schemas/publicApiCommonErrorResponse"
					},
					{
						"type": "object",
						"properties": {
							"code": {
								"enum": [
									"invalid_request",
									"invalid_grant",
									"unauthorized_client",
									"unsupported_grant_type",
									"invalid_scope"
								]
							},
							"status": {
								"const": 400
							}
						},
						"required": ["code", "status"],
						"additionalProperties": false
					}
				]
			},
			"error_oauth_401": {
				"allOf": [
					{
						"$ref": "#/components/schemas/publicApiCommonErrorResponse"
					},
					{
						"type": "object",
						"properties": {
							"code": {
								"enum": ["invalid_client"]
							},
							"status": {
								"const": 401
							}
						},
						"required": ["code", "status"],
						"additionalProperties": false
					}
				]
			},
			"error_oauth_403": {
				"allOf": [
					{
						"$ref": "#/components/schemas/publicApiCommonErrorResponse"
					},
					{
						"type": "object",
						"properties": {
							"code": {
								"enum": ["test_env_error"]
							},
							"status": {
								"const": 403
							}
						},
						"required": ["code", "status"],
						"additionalProperties": false
					}
				]
			},
			"error_oauth_500": {
				"allOf": [
					{
						"$ref": "#/components/schemas/publicApiCommonErrorResponse"
					},
					{
						"type": "object",
						"properties": {
							"code": {
								"enum": ["internal_server_error"]
							},
							"status": {
								"const": 500
							}
						},
						"required": ["code", "status"],
						"additionalProperties": false
					}
				]
			},
			"expressionObjectResponse": {
				"type": "object",
				"properties": {
					"expression": {
						"type": "string"
					}
				},
				"required": ["expression"]
			},
			"externalInternalOrExternalFileWithNameResponse": {
				"type": "object",
				"properties": {
					"type": {
						"type": "string",
						"const": "external",
						"description": "Type of attachment. In this case, an external URL."
					},
					"external": {
						"type": "object",
						"properties": {
							"url": {
								"type": "string",
								"description": "The URL of the external file or resource."
							}
						},
						"additionalProperties": false,
						"required": ["url"],
						"description": "The external URL."
					}
				},
				"required": ["type", "external"],
				"title": "External"
			},
			"externalMediaContentWithFileAndCaptionResponse": {
				"title": "External",
				"type": "object",
				"properties": {
					"type": {
						"type": "string",
						"const": "external"
					},
					"external": {
						"type": "object",
						"properties": {
							"url": {
								"$ref": "#/components/schemas/textRequest"
							}
						},
						"required": ["url"]
					},
					"caption": {
						"type": "array",
						"items": {
							"$ref": "#/components/schemas/richTextItemResponse"
						},
						"maxItems": 100
					}
				},
				"required": ["type", "external", "caption"]
			},
			"externalMediaContentWithFileNameAndCaptionResponse": {
				"title": "External",
				"type": "object",
				"properties": {
					"type": {
						"type": "string",
						"const": "external"
					},
					"external": {
						"type": "object",
						"properties": {
							"url": {
								"$ref": "#/components/schemas/textRequest"
							}
						},
						"required": ["url"]
					},
					"caption": {
						"type": "array",
						"items": {
							"$ref": "#/components/schemas/richTextItemResponse"
						},
						"maxItems": 100
					},
					"name": {
						"type": "string"
					}
				},
				"required": ["type", "external", "caption", "name"]
			},
			"externalPageCoverResponse": {
				"type": "object",
				"properties": {
					"type": {
						"type": "string",
						"const": "external",
						"description": "Type of cover. In this case, an external URL."
					},
					"external": {
						"type": "object",
						"properties": {
							"url": {
								"type": "string",
								"description": "The URL of the external file or resource."
							}
						},
						"additionalProperties": false,
						"required": ["url"],
						"description": "The external URL for the cover."
					}
				},
				"additionalProperties": false,
				"required": ["type", "external"],
				"title": "External"
			},
			"externalPageIconRequest": {
				"type": "object",
				"properties": {
					"type": {
						"type": "string",
						"const": "external",
						"description": "Always `external`"
					},
					"external": {
						"type": "object",
						"properties": {
							"url": {
								"type": "string",
								"description": "The URL of the external file."
							}
						},
						"required": ["url"]
					}
				},
				"required": ["external"],
				"title": "External"
			},
			"externalPageIconResponse": {
				"type": "object",
				"properties": {
					"type": {
						"type": "string",
						"const": "external",
						"description": "Type of icon. In this case, an external URL."
					},
					"external": {
						"type": "object",
						"properties": {
							"url": {
								"type": "string",
								"description": "The URL of the external file or resource."
							}
						},
						"additionalProperties": false,
						"required": ["url"],
						"description": "The external URL for the icon."
					}
				},
				"additionalProperties": false,
				"required": ["type", "external"],
				"title": "External"
			},
			"fileBlockObjectResponse": {
				"title": "File",
				"type": "object",
				"properties": {
					"type": {
						"type": "string",
						"const": "file"
					},
					"file": {
						"$ref": "#/components/schemas/mediaContentWithFileNameAndCaptionResponse"
					},
					"parent": {
						"$ref": "#/components/schemas/parentForBlockBasedObjectResponse"
					},
					"object": {
						"type": "string",
						"const": "block"
					},
					"id": {
						"type": "string",
						"format": "uuid"
					},
					"created_time": {
						"type": "string",
						"format": "date-time"
					},
					"created_by": {
						"$ref": "#/components/schemas/partialUserObjectResponse"
					},
					"last_edited_time": {
						"type": "string",
						"format": "date-time"
					},
					"last_edited_by": {
						"$ref": "#/components/schemas/partialUserObjectResponse"
					},
					"has_children": {
						"type": "boolean"
					},
					"in_trash": {
						"type": "boolean"
					}
				},
				"required": [
					"type",
					"file",
					"parent",
					"object",
					"id",
					"created_time",
					"created_by",
					"last_edited_time",
					"last_edited_by",
					"has_children",
					"in_trash"
				]
			},
			"fileInternalOrExternalFileWithNameResponse": {
				"type": "object",
				"properties": {
					"type": {
						"type": "string",
						"const": "file",
						"description": "Type of attachment. In this case, a file uploaded to a Notion workspace."
					},
					"file": {
						"$ref": "#/components/schemas/internalFileResponse",
						"description": "The file URL."
					}
				},
				"required": ["type", "file"],
				"title": "File"
			},
			"fileMediaContentWithFileAndCaptionResponse": {
				"title": "File",
				"type": "object",
				"properties": {
					"type": {
						"type": "string",
						"const": "file"
					},
					"file": {
						"$ref": "#/components/schemas/internalFileResponse"
					},
					"caption": {
						"type": "array",
						"items": {
							"$ref": "#/components/schemas/richTextItemResponse"
						},
						"maxItems": 100
					}
				},
				"required": ["type", "file", "caption"]
			},
			"fileMediaContentWithFileNameAndCaptionResponse": {
				"title": "File",
				"type": "object",
				"properties": {
					"type": {
						"type": "string",
						"const": "file"
					},
					"file": {
						"$ref": "#/components/schemas/internalFileResponse"
					},
					"caption": {
						"type": "array",
						"items": {
							"$ref": "#/components/schemas/richTextItemResponse"
						},
						"maxItems": 100
					},
					"name": {
						"type": "string"
					}
				},
				"required": ["type", "file", "caption", "name"]
			},
			"filePageCoverResponse": {
				"type": "object",
				"properties": {
					"type": {
						"type": "string",
						"const": "file",
						"description": "Type of cover. In this case, a file."
					},
					"file": {
						"$ref": "#/components/schemas/internalFileResponse",
						"description": "The file URL for the cover."
					}
				},
				"additionalProperties": false,
				"required": ["type", "file"],
				"title": "File"
			},
			"filePageIconResponse": {
				"type": "object",
				"properties": {
					"type": {
						"type": "string",
						"const": "file",
						"description": "Type of icon. In this case, a file."
					},
					"file": {
						"$ref": "#/components/schemas/internalFileResponse",
						"description": "The file URL for the icon."
					}
				},
				"additionalProperties": false,
				"required": ["type", "file"],
				"title": "File"
			},
			"fileUploadPageIconRequest": {
				"type": "object",
				"properties": {
					"type": {
						"type": "string",
						"const": "file_upload",
						"description": "Always `file_upload`"
					},
					"file_upload": {
						"type": "object",
						"properties": {
							"id": {
								"type": "string",
								"description": "ID of a FileUpload object that has the status `uploaded`."
							}
						},
						"required": ["id"]
					}
				},
				"required": ["file_upload"],
				"title": "File Upload"
			},
			"filesDatabasePropertyConfigResponse": {
				"type": "object",
				"properties": {
					"type": {
						"type": "string",
						"const": "files",
						"description": "Always `files`"
					},
					"files": {
						"$ref": "#/components/schemas/emptyObject"
					}
				},
				"required": ["type", "files"],
				"title": "Files"
			},
			"filesPropertyItemObjectResponse": {
				"title": "Files",
				"type": "object",
				"properties": {
					"type": {
						"type": "string",
						"const": "files"
					},
					"files": {
						"type": "array",
						"items": {
							"$ref": "#/components/schemas/internalOrExternalFileWithNameResponse"
						},
						"maxItems": 100
					},
					"object": {
						"type": "string",
						"const": "property_item"
					},
					"id": {
						"type": "string"
					}
				},
				"required": ["type", "files", "object", "id"]
			},
			"filesSimplePropertyValueResponse": {
				"type": "object",
				"properties": {
					"type": {
						"type": "string",
						"const": "files",
						"description": "Always `files`"
					},
					"files": {
						"type": "array",
						"items": {
							"$ref": "#/components/schemas/internalOrExternalFileWithNameResponse"
						},
						"maxItems": 100
					}
				},
				"additionalProperties": false,
				"required": ["type", "files"],
				"title": "Files"
			},
			"formulaDatabasePropertyConfigResponse": {
				"type": "object",
				"properties": {
					"type": {
						"type": "string",
						"const": "formula",
						"description": "Always `formula`"
					},
					"formula": {
						"type": "object",
						"properties": {
							"expression": {
								"type": "string"
							}
						},
						"additionalProperties": false,
						"required": ["expression"]
					}
				},
				"required": ["type", "formula"],
				"title": "Formula"
			},
			"formulaPropertyItemObjectResponse": {
				"title": "Formula",
				"type": "object",
				"properties": {
					"type": {
						"type": "string",
						"const": "formula"
					},
					"formula": {
						"$ref": "#/components/schemas/formulaPropertyResponse"
					},
					"object": {
						"type": "string",
						"const": "property_item"
					},
					"id": {
						"type": "string"
					}
				},
				"required": ["type", "formula", "object", "id"]
			},
			"formulaPropertyResponse": {
				"anyOf": [
					{
						"$ref": "#/components/schemas/stringFormulaPropertyResponse"
					},
					{
						"$ref": "#/components/schemas/dateFormulaPropertyResponse"
					},
					{
						"$ref": "#/components/schemas/numberFormulaPropertyResponse"
					},
					{
						"$ref": "#/components/schemas/booleanFormulaPropertyResponse"
					},
					{
						"$ref": "#/components/schemas/unsupportedFormulaPropertyResponse"
					}
				]
			},
			"formulaPropertyValueResponse": {
				"oneOf": [
					{
						"$ref": "#/components/schemas/booleanFormulaPropertyValueResponse"
					},
					{
						"$ref": "#/components/schemas/dateFormulaPropertyValueResponse"
					},
					{
						"$ref": "#/components/schemas/numberFormulaPropertyValueResponse"
					},
					{
						"$ref": "#/components/schemas/stringFormulaPropertyValueResponse"
					},
					{
						"$ref": "#/components/schemas/unsupportedFormulaPropertyValueResponse"
					}
				]
			},
			"formulaSimplePropertyValueResponse": {
				"type": "object",
				"properties": {
					"type": {
						"type": "string",
						"const": "formula",
						"description": "Always `formula`"
					},
					"formula": {
						"$ref": "#/components/schemas/formulaPropertyValueResponse"
					}
				},
				"additionalProperties": false,
				"required": ["type", "formula"],
				"title": "Formula"
			},
			"groupMembershipObjectResponse": {
				"type": "object",
				"properties": {
					"object": {
						"type": "string",
						"const": "group_membership",
						"description": "The group membership object type."
					},
					"group_id": {
						"$ref": "#/components/schemas/idResponse",
						"description": "The ID of the group."
					},
					"member": {
						"type": "object",
						"properties": {
							"type": {
								"type": "string",
								"const": "user",
								"description": "The type of member."
							},
							"user_id": {
								"$ref": "#/components/schemas/idResponse",
								"description": "The ID of the user."
							}
						},
						"additionalProperties": false,
						"required": ["type", "user_id"],
						"description": "The user that is a direct member of the group."
					},
					"role": {
						"type": "string",
						"enum": ["owner", "member"],
						"description": "The user's role in the group."
					}
				},
				"additionalProperties": false,
				"required": ["object", "group_id", "member", "role"]
			},
			"groupObjectResponse": {
				"type": "object",
				"properties": {
					"id": {
						"$ref": "#/components/schemas/idResponse",
						"description": "The ID of the group."
					},
					"object": {
						"type": "string",
						"const": "group",
						"description": "The group object type name."
					},
					"name": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						],
						"description": "The name of the group."
					}
				},
				"additionalProperties": false,
				"required": ["id", "object", "name"]
			},
			"headerContentWithRichTextAndColorResponse": {
				"type": "object",
				"properties": {
					"rich_text": {
						"type": "array",
						"items": {
							"$ref": "#/components/schemas/richTextItemResponse"
						},
						"maxItems": 100
					},
					"color": {
						"$ref": "#/components/schemas/apiColor"
					},
					"is_toggleable": {
						"type": "boolean"
					}
				},
				"required": ["rich_text", "color", "is_toggleable"]
			},
			"heading1BlockObjectResponse": {
				"title": "Heading 1",
				"type": "object",
				"properties": {
					"type": {
						"type": "string",
						"const": "heading_1"
					},
					"heading_1": {
						"$ref": "#/components/schemas/headerContentWithRichTextAndColorResponse"
					},
					"parent": {
						"$ref": "#/components/schemas/parentForBlockBasedObjectResponse"
					},
					"object": {
						"type": "string",
						"const": "block"
					},
					"id": {
						"type": "string",
						"format": "uuid"
					},
					"created_time": {
						"type": "string",
						"format": "date-time"
					},
					"created_by": {
						"$ref": "#/components/schemas/partialUserObjectResponse"
					},
					"last_edited_time": {
						"type": "string",
						"format": "date-time"
					},
					"last_edited_by": {
						"$ref": "#/components/schemas/partialUserObjectResponse"
					},
					"has_children": {
						"type": "boolean"
					},
					"in_trash": {
						"type": "boolean"
					}
				},
				"required": [
					"type",
					"heading_1",
					"parent",
					"object",
					"id",
					"created_time",
					"created_by",
					"last_edited_time",
					"last_edited_by",
					"has_children",
					"in_trash"
				]
			},
			"heading2BlockObjectResponse": {
				"title": "Heading 2",
				"type": "object",
				"properties": {
					"type": {
						"type": "string",
						"const": "heading_2"
					},
					"heading_2": {
						"$ref": "#/components/schemas/headerContentWithRichTextAndColorResponse"
					},
					"parent": {
						"$ref": "#/components/schemas/parentForBlockBasedObjectResponse"
					},
					"object": {
						"type": "string",
						"const": "block"
					},
					"id": {
						"type": "string",
						"format": "uuid"
					},
					"created_time": {
						"type": "string",
						"format": "date-time"
					},
					"created_by": {
						"$ref": "#/components/schemas/partialUserObjectResponse"
					},
					"last_edited_time": {
						"type": "string",
						"format": "date-time"
					},
					"last_edited_by": {
						"$ref": "#/components/schemas/partialUserObjectResponse"
					},
					"has_children": {
						"type": "boolean"
					},
					"in_trash": {
						"type": "boolean"
					}
				},
				"required": [
					"type",
					"heading_2",
					"parent",
					"object",
					"id",
					"created_time",
					"created_by",
					"last_edited_time",
					"last_edited_by",
					"has_children",
					"in_trash"
				]
			},
			"heading3BlockObjectResponse": {
				"title": "Heading 3",
				"type": "object",
				"properties": {
					"type": {
						"type": "string",
						"const": "heading_3"
					},
					"heading_3": {
						"$ref": "#/components/schemas/headerContentWithRichTextAndColorResponse"
					},
					"parent": {
						"$ref": "#/components/schemas/parentForBlockBasedObjectResponse"
					},
					"object": {
						"type": "string",
						"const": "block"
					},
					"id": {
						"type": "string",
						"format": "uuid"
					},
					"created_time": {
						"type": "string",
						"format": "date-time"
					},
					"created_by": {
						"$ref": "#/components/schemas/partialUserObjectResponse"
					},
					"last_edited_time": {
						"type": "string",
						"format": "date-time"
					},
					"last_edited_by": {
						"$ref": "#/components/schemas/partialUserObjectResponse"
					},
					"has_children": {
						"type": "boolean"
					},
					"in_trash": {
						"type": "boolean"
					}
				},
				"required": [
					"type",
					"heading_3",
					"parent",
					"object",
					"id",
					"created_time",
					"created_by",
					"last_edited_time",
					"last_edited_by",
					"has_children",
					"in_trash"
				]
			},
			"heading4BlockObjectResponse": {
				"title": "Heading 4",
				"type": "object",
				"properties": {
					"type": {
						"type": "string",
						"const": "heading_4"
					},
					"heading_4": {
						"$ref": "#/components/schemas/headerContentWithRichTextAndColorResponse"
					},
					"parent": {
						"$ref": "#/components/schemas/parentForBlockBasedObjectResponse"
					},
					"object": {
						"type": "string",
						"const": "block"
					},
					"id": {
						"type": "string",
						"format": "uuid"
					},
					"created_time": {
						"type": "string",
						"format": "date-time"
					},
					"created_by": {
						"$ref": "#/components/schemas/partialUserObjectResponse"
					},
					"last_edited_time": {
						"type": "string",
						"format": "date-time"
					},
					"last_edited_by": {
						"$ref": "#/components/schemas/partialUserObjectResponse"
					},
					"has_children": {
						"type": "boolean"
					},
					"in_trash": {
						"type": "boolean"
					}
				},
				"required": [
					"type",
					"heading_4",
					"parent",
					"object",
					"id",
					"created_time",
					"created_by",
					"last_edited_time",
					"last_edited_by",
					"has_children",
					"in_trash"
				]
			},
			"iconPageIconRequest": {
				"type": "object",
				"properties": {
					"type": {
						"type": "string",
						"const": "icon",
						"description": "Always `icon`"
					},
					"icon": {
						"type": "object",
						"properties": {
							"name": {
								"$ref": "#/components/schemas/noticonName",
								"description": "The name of the Notion icon (e.g. pizza, meeting, home). See the Notion icon picker for valid names."
							},
							"color": {
								"$ref": "#/components/schemas/noticonColor",
								"description": "The color variant of the icon. Defaults to gray if not specified. Valid values: gray, lightgray, brown, yellow, orange, green, blue, purple, pink, red."
							}
						},
						"required": ["name"],
						"description": "A Notion native icon, specified by name and optional color."
					}
				},
				"required": ["icon"],
				"title": "Icon"
			},
			"iconPageIconResponse": {
				"type": "object",
				"properties": {
					"type": {
						"type": "string",
						"const": "icon",
						"description": "Type of icon. In this case, a Notion native icon."
					},
					"icon": {
						"$ref": "#/components/schemas/noticonIconResponse",
						"description": "The Notion native icon, specified by name and color."
					}
				},
				"additionalProperties": false,
				"required": ["type", "icon"],
				"title": "Icon"
			},
			"idObjectResponse": {
				"type": "object",
				"properties": {
					"id": {
						"type": "string"
					}
				},
				"required": ["id"]
			},
			"idRequest": {
				"type": "string"
			},
			"idResponse": {
				"type": "string",
				"format": "uuid"
			},
			"imageBlockObjectResponse": {
				"title": "Image",
				"type": "object",
				"properties": {
					"type": {
						"type": "string",
						"const": "image"
					},
					"image": {
						"$ref": "#/components/schemas/mediaContentWithFileAndCaptionResponse"
					},
					"parent": {
						"$ref": "#/components/schemas/parentForBlockBasedObjectResponse"
					},
					"object": {
						"type": "string",
						"const": "block"
					},
					"id": {
						"type": "string",
						"format": "uuid"
					},
					"created_time": {
						"type": "string",
						"format": "date-time"
					},
					"created_by": {
						"$ref": "#/components/schemas/partialUserObjectResponse"
					},
					"last_edited_time": {
						"type": "string",
						"format": "date-time"
					},
					"last_edited_by": {
						"$ref": "#/components/schemas/partialUserObjectResponse"
					},
					"has_children": {
						"type": "boolean"
					},
					"in_trash": {
						"type": "boolean"
					}
				},
				"required": [
					"type",
					"image",
					"parent",
					"object",
					"id",
					"created_time",
					"created_by",
					"last_edited_time",
					"last_edited_by",
					"has_children",
					"in_trash"
				]
			},
			"internalFileResponse": {
				"type": "object",
				"properties": {
					"url": {
						"type": "string",
						"description": "The URL of the file."
					},
					"expiry_time": {
						"type": "string",
						"format": "date-time",
						"description": "The time when the URL will expire."
					}
				},
				"additionalProperties": false,
				"required": ["url", "expiry_time"]
			},
			"internalOrExternalFileWithNameResponse": {
				"allOf": [
					{
						"$ref": "#/components/schemas/internalOrExternalFileWithNameResponseCommon"
					},
					{
						"oneOf": [
							{
								"$ref": "#/components/schemas/fileInternalOrExternalFileWithNameResponse"
							},
							{
								"$ref": "#/components/schemas/externalInternalOrExternalFileWithNameResponse"
							}
						]
					}
				]
			},
			"internalOrExternalFileWithNameResponseCommon": {
				"type": "object",
				"properties": {
					"name": {
						"type": "string",
						"description": "The name of the file."
					}
				},
				"additionalProperties": false,
				"required": ["name"]
			},
			"languageRequest": {
				"type": "string",
				"enum": [
					"abap",
					"abc",
					"agda",
					"arduino",
					"ascii art",
					"assembly",
					"bash",
					"basic",
					"bnf",
					"c",
					"c#",
					"c++",
					"clojure",
					"coffeescript",
					"coq",
					"css",
					"dart",
					"dhall",
					"diff",
					"docker",
					"ebnf",
					"elixir",
					"elm",
					"erlang",
					"f#",
					"flow",
					"fortran",
					"gherkin",
					"glsl",
					"go",
					"graphql",
					"groovy",
					"haskell",
					"hcl",
					"html",
					"idris",
					"java",
					"javascript",
					"json",
					"julia",
					"kotlin",
					"latex",
					"less",
					"lisp",
					"livescript",
					"llvm ir",
					"lua",
					"makefile",
					"markdown",
					"markup",
					"matlab",
					"mathematica",
					"mermaid",
					"nix",
					"notion formula",
					"objective-c",
					"ocaml",
					"pascal",
					"perl",
					"php",
					"plain text",
					"powershell",
					"prolog",
					"protobuf",
					"purescript",
					"python",
					"r",
					"racket",
					"reason",
					"ruby",
					"rust",
					"sass",
					"scala",
					"scheme",
					"scss",
					"shell",
					"smalltalk",
					"solidity",
					"sql",
					"swift",
					"toml",
					"typescript",
					"vb.net",
					"verilog",
					"vhdl",
					"visual basic",
					"webassembly",
					"xml",
					"yaml",
					"java/c/c++/c#"
				]
			},
			"lastEditedByDatabasePropertyConfigResponse": {
				"type": "object",
				"properties": {
					"type": {
						"type": "string",
						"const": "last_edited_by",
						"description": "Always `last_edited_by`"
					},
					"last_edited_by": {
						"$ref": "#/components/schemas/emptyObject"
					}
				},
				"required": ["type", "last_edited_by"],
				"title": "Last Edited By"
			},
			"lastEditedByPropertyItemObjectResponse": {
				"title": "Last Edited By",
				"type": "object",
				"properties": {
					"type": {
						"type": "string",
						"const": "last_edited_by"
					},
					"last_edited_by": {
						"anyOf": [
							{
								"$ref": "#/components/schemas/partialUserObjectResponse"
							},
							{
								"$ref": "#/components/schemas/userObjectResponse"
							}
						]
					},
					"object": {
						"type": "string",
						"const": "property_item"
					},
					"id": {
						"type": "string"
					}
				},
				"required": ["type", "last_edited_by", "object", "id"]
			},
			"lastEditedBySimplePropertyValueResponse": {
				"type": "object",
				"properties": {
					"type": {
						"type": "string",
						"const": "last_edited_by",
						"description": "Always `last_edited_by`"
					},
					"last_edited_by": {
						"$ref": "#/components/schemas/userValueResponse"
					}
				},
				"additionalProperties": false,
				"required": ["type", "last_edited_by"],
				"title": "Last Edited By"
			},
			"lastEditedTimeDatabasePropertyConfigResponse": {
				"type": "object",
				"properties": {
					"type": {
						"type": "string",
						"const": "last_edited_time",
						"description": "Always `last_edited_time`"
					},
					"last_edited_time": {
						"$ref": "#/components/schemas/emptyObject"
					}
				},
				"required": ["type", "last_edited_time"],
				"title": "Last Edited Time"
			},
			"lastEditedTimePropertyItemObjectResponse": {
				"title": "Last Edited Time",
				"type": "object",
				"properties": {
					"type": {
						"type": "string",
						"const": "last_edited_time"
					},
					"last_edited_time": {
						"type": "string",
						"format": "date-time"
					},
					"object": {
						"type": "string",
						"const": "property_item"
					},
					"id": {
						"type": "string"
					}
				},
				"required": ["type", "last_edited_time", "object", "id"]
			},
			"lastEditedTimeSimplePropertyValueResponse": {
				"type": "object",
				"properties": {
					"type": {
						"type": "string",
						"const": "last_edited_time",
						"description": "Always `last_edited_time`"
					},
					"last_edited_time": {
						"type": "string",
						"format": "date-time"
					}
				},
				"additionalProperties": false,
				"required": ["type", "last_edited_time"],
				"title": "Last Edited Time"
			},
			"linkMentionResponse": {
				"type": "object",
				"properties": {
					"href": {
						"type": "string",
						"description": "The href of the link mention."
					},
					"title": {
						"type": "string",
						"description": "The title of the link."
					},
					"description": {
						"type": "string",
						"description": "The description of the link."
					},
					"link_author": {
						"type": "string",
						"description": "The author of the link."
					},
					"link_provider": {
						"type": "string",
						"description": "The provider of the link."
					},
					"thumbnail_url": {
						"type": "string",
						"description": "The thumbnail URL of the link."
					},
					"icon_url": {
						"type": "string",
						"description": "The icon URL of the link."
					},
					"iframe_url": {
						"type": "string",
						"description": "The iframe URL of the link."
					},
					"height": {
						"type": "integer",
						"description": "The height of the link preview iframe."
					},
					"padding": {
						"type": "integer",
						"description": "The padding of the link preview iframe."
					},
					"padding_top": {
						"type": "integer",
						"description": "The top padding of the link preview iframe."
					}
				},
				"additionalProperties": false,
				"required": ["href"]
			},
			"linkPreviewBlockObjectResponse": {
				"title": "Link Preview",
				"type": "object",
				"properties": {
					"type": {
						"type": "string",
						"const": "link_preview"
					},
					"link_preview": {
						"$ref": "#/components/schemas/mediaContentWithUrlResponse"
					},
					"parent": {
						"$ref": "#/components/schemas/parentForBlockBasedObjectResponse"
					},
					"object": {
						"type": "string",
						"const": "block"
					},
					"id": {
						"type": "string",
						"format": "uuid"
					},
					"created_time": {
						"type": "string",
						"format": "date-time"
					},
					"created_by": {
						"$ref": "#/components/schemas/partialUserObjectResponse"
					},
					"last_edited_time": {
						"type": "string",
						"format": "date-time"
					},
					"last_edited_by": {
						"$ref": "#/components/schemas/partialUserObjectResponse"
					},
					"has_children": {
						"type": "boolean"
					},
					"in_trash": {
						"type": "boolean"
					}
				},
				"required": [
					"type",
					"link_preview",
					"parent",
					"object",
					"id",
					"created_time",
					"created_by",
					"last_edited_time",
					"last_edited_by",
					"has_children",
					"in_trash"
				]
			},
			"linkPreviewMentionResponse": {
				"type": "object",
				"properties": {
					"url": {
						"type": "string",
						"description": "The URL of the link preview mention."
					}
				},
				"additionalProperties": false,
				"required": ["url"]
			},
			"linkToPageBlockObjectResponse": {
				"title": "Link To Page",
				"type": "object",
				"properties": {
					"type": {
						"type": "string",
						"const": "link_to_page"
					},
					"link_to_page": {
						"anyOf": [
							{
								"title": "Page Id",
								"type": "object",
								"properties": {
									"type": {
										"type": "string",
										"const": "page_id"
									},
									"page_id": {
										"$ref": "#/components/schemas/idRequest"
									}
								},
								"required": ["type", "page_id"]
							},
							{
								"title": "Database Id",
								"type": "object",
								"properties": {
									"type": {
										"type": "string",
										"const": "database_id"
									},
									"database_id": {
										"$ref": "#/components/schemas/idRequest"
									}
								},
								"required": ["type", "database_id"]
							},
							{
								"title": "Comment Id",
								"type": "object",
								"properties": {
									"type": {
										"type": "string",
										"const": "comment_id"
									},
									"comment_id": {
										"$ref": "#/components/schemas/idRequest"
									}
								},
								"required": ["type", "comment_id"]
							}
						]
					},
					"parent": {
						"$ref": "#/components/schemas/parentForBlockBasedObjectResponse"
					},
					"object": {
						"type": "string",
						"const": "block"
					},
					"id": {
						"type": "string",
						"format": "uuid"
					},
					"created_time": {
						"type": "string",
						"format": "date-time"
					},
					"created_by": {
						"$ref": "#/components/schemas/partialUserObjectResponse"
					},
					"last_edited_time": {
						"type": "string",
						"format": "date-time"
					},
					"last_edited_by": {
						"$ref": "#/components/schemas/partialUserObjectResponse"
					},
					"has_children": {
						"type": "boolean"
					},
					"in_trash": {
						"type": "boolean"
					}
				},
				"required": [
					"type",
					"link_to_page",
					"parent",
					"object",
					"id",
					"created_time",
					"created_by",
					"last_edited_time",
					"last_edited_by",
					"has_children",
					"in_trash"
				]
			},
			"mediaContentWithFileAndCaptionResponse": {
				"anyOf": [
					{
						"$ref": "#/components/schemas/externalMediaContentWithFileAndCaptionResponse"
					},
					{
						"$ref": "#/components/schemas/fileMediaContentWithFileAndCaptionResponse"
					}
				]
			},
			"mediaContentWithFileNameAndCaptionResponse": {
				"anyOf": [
					{
						"$ref": "#/components/schemas/externalMediaContentWithFileNameAndCaptionResponse"
					},
					{
						"$ref": "#/components/schemas/fileMediaContentWithFileNameAndCaptionResponse"
					}
				]
			},
			"mediaContentWithUrlAndCaptionResponse": {
				"type": "object",
				"properties": {
					"url": {
						"type": "string"
					},
					"caption": {
						"type": "array",
						"items": {
							"$ref": "#/components/schemas/richTextItemResponse"
						},
						"maxItems": 100
					}
				},
				"required": ["url", "caption"]
			},
			"mediaContentWithUrlResponse": {
				"type": "object",
				"properties": {
					"url": {
						"$ref": "#/components/schemas/textRequest"
					}
				},
				"required": ["url"]
			},
			"meetingNotesBlockObjectResponse": {
				"title": "Meeting Notes",
				"type": "object",
				"properties": {
					"type": {
						"type": "string",
						"const": "meeting_notes"
					},
					"meeting_notes": {
						"$ref": "#/components/schemas/transcriptionBlockResponse"
					},
					"parent": {
						"$ref": "#/components/schemas/parentForBlockBasedObjectResponse"
					},
					"object": {
						"type": "string",
						"const": "block"
					},
					"id": {
						"type": "string",
						"format": "uuid"
					},
					"created_time": {
						"type": "string",
						"format": "date-time"
					},
					"created_by": {
						"$ref": "#/components/schemas/partialUserObjectResponse"
					},
					"last_edited_time": {
						"type": "string",
						"format": "date-time"
					},
					"last_edited_by": {
						"$ref": "#/components/schemas/partialUserObjectResponse"
					},
					"has_children": {
						"type": "boolean"
					},
					"in_trash": {
						"type": "boolean"
					}
				},
				"required": [
					"type",
					"meeting_notes",
					"parent",
					"object",
					"id",
					"created_time",
					"created_by",
					"last_edited_time",
					"last_edited_by",
					"has_children",
					"in_trash"
				]
			},
			"meetingNotesPropertyFilter": {
				"type": "object",
				"properties": {
					"property": {
						"type": "string",
						"enum": [
							"title",
							"attendees",
							"created_time",
							"created_by",
							"last_edited_time",
							"last_edited_by",
							"notion://meeting_notes/attendees"
						],
						"description": "Which meeting-note property to filter on. Prefer the short names; the schema URI form is accepted for compatibility."
					},
					"filter": {
						"oneOf": [
							{
								"type": "object",
								"properties": {
									"operator": {
										"type": "string",
										"enum": [
											"string_is",
											"string_is_not",
											"string_contains",
											"string_does_not_contain",
											"string_starts_with",
											"string_ends_with"
										],
										"description": "How to compare the text."
									},
									"value": {
										"type": "object",
										"properties": {
											"type": {
												"type": "string",
												"const": "exact",
												"description": "Always `exact`"
											},
											"value": {
												"type": "string",
												"description": "The literal text the operator compares against."
											}
										},
										"additionalProperties": false,
										"required": ["type", "value"],
										"description": "The text to compare against."
									}
								},
								"additionalProperties": false,
								"required": ["operator", "value"]
							},
							{
								"type": "object",
								"properties": {
									"operator": {
										"type": "string",
										"enum": ["person_contains", "person_does_not_contain"],
										"description": "Whether the property must contain the people listed."
									},
									"value": {
										"type": "array",
										"items": {
											"oneOf": [
												{
													"type": "object",
													"properties": {
														"type": {
															"type": "string",
															"const": "exact",
															"description": "Always `exact`"
														},
														"value": {
															"type": "object",
															"properties": {
																"table": {
																	"type": "string",
																	"const": "notion_user",
																	"description": "Always `notion_user`"
																},
																"id": {
																	"type": "string",
																	"examples": [
																		"3f2b25f3-0a52-4a90-8f0d-5a3f0e6c1d2e",
																		"user://3f2b25f3-0a52-4a90-8f0d-5a3f0e6c1d2e"
																	],
																	"description": "The user's ID, as a UUID or the `user://<uuid>` form returned by user search."
																}
															},
															"additionalProperties": false,
															"required": ["table", "id"],
															"description": "Pointer to the Notion user to match."
														}
													},
													"additionalProperties": false,
													"required": ["type", "value"]
												},
												{
													"type": "object",
													"properties": {
														"type": {
															"type": "string",
															"const": "relative",
															"description": "Always `relative`"
														},
														"value": {
															"type": "string",
															"const": "me",
															"description": "Always `me`"
														}
													},
													"additionalProperties": false,
													"required": ["type", "value"]
												}
											]
										},
										"maxItems": 100,
										"description": "The people to compare against."
									}
								},
								"additionalProperties": false,
								"required": ["operator", "value"]
							},
							{
								"type": "object",
								"properties": {
									"operator": {
										"type": "string",
										"enum": [
											"date_is",
											"date_is_before",
											"date_is_after",
											"date_is_on_or_before",
											"date_is_on_or_after"
										],
										"description": "How to compare the date."
									},
									"value": {
										"oneOf": [
											{
												"type": "object",
												"properties": {
													"type": {
														"type": "string",
														"const": "relative",
														"description": "Always `relative`"
													},
													"value": {
														"type": "string",
														"enum": [
															"today",
															"tomorrow",
															"yesterday",
															"one_week_ago",
															"one_week_from_now",
															"one_month_ago",
															"one_month_from_now"
														],
														"description": "One of: `today`, `tomorrow`, `yesterday`, `one_week_ago`, `one_week_from_now`, `one_month_ago`, `one_month_from_now`"
													}
												},
												"additionalProperties": false,
												"required": ["type", "value"]
											},
											{
												"type": "object",
												"properties": {
													"type": {
														"type": "string",
														"const": "exact",
														"description": "Always `exact`"
													},
													"value": {
														"oneOf": [
															{
																"type": "object",
																"properties": {
																	"type": {
																		"type": "string",
																		"const": "date",
																		"description": "Always `date`"
																	},
																	"start_date": {
																		"type": "string",
																		"examples": ["1990-12-28"],
																		"format": "date",
																		"description": "The calendar date as an ISO 8601 date string."
																	}
																},
																"additionalProperties": false,
																"required": ["type", "start_date"]
															},
															{
																"type": "object",
																"properties": {
																	"type": {
																		"type": "string",
																		"const": "datetime",
																		"description": "Always `datetime`"
																	},
																	"start_date": {
																		"type": "string",
																		"examples": ["1990-12-28"],
																		"format": "date",
																		"description": "The calendar date as an ISO 8601 date string."
																	},
																	"start_time": {
																		"type": "string",
																		"examples": ["09:30"],
																		"description": "The time of day in 24-hour HH:MM format."
																	},
																	"time_zone": {
																		"type": "string",
																		"examples": ["America/Los_Angeles"],
																		"description": "The IANA time zone name the time is interpreted in."
																	}
																},
																"additionalProperties": false,
																"required": [
																	"type",
																	"start_date",
																	"start_time",
																	"time_zone"
																]
															}
														],
														"description": "Use the is_empty operator to match an unset date."
													}
												},
												"additionalProperties": false,
												"required": ["type", "value"]
											}
										],
										"description": "The date to compare against."
									},
									"use_end": {
										"type": "boolean",
										"description": "Compare against the end of a date range rather than its start."
									}
								},
								"additionalProperties": false,
								"required": ["operator", "value"]
							},
							{
								"type": "object",
								"properties": {
									"operator": {
										"type": "string",
										"enum": ["date_is_within", "date_is_relative_to"],
										"description": "How to compare the date against the range."
									},
									"value": {
										"oneOf": [
											{
												"type": "object",
												"properties": {
													"type": {
														"type": "string",
														"const": "relative",
														"description": "Always `relative`"
													},
													"value": {
														"type": "string",
														"const": "custom",
														"description": "Always `custom`"
													},
													"direction": {
														"type": "string",
														"enum": ["past", "future"],
														"description": "Whether the window runs backwards or forwards from now."
													},
													"unit": {
														"type": "string",
														"enum": ["year", "month", "week", "day"],
														"description": "One of: `year`, `month`, `week`, `day`"
													},
													"count": {
														"type": "integer",
														"minimum": 1,
														"description": "How many units wide the window is."
													}
												},
												"additionalProperties": false,
												"required": [
													"type",
													"value",
													"direction",
													"unit",
													"count"
												]
											},
											{
												"type": "object",
												"properties": {
													"type": {
														"type": "string",
														"const": "relative",
														"description": "Always `relative`"
													},
													"value": {
														"type": "string",
														"const": "surrounding",
														"description": "Always `surrounding`"
													},
													"unit": {
														"type": "string",
														"enum": ["year", "month", "week", "day"],
														"description": "One of: `year`, `month`, `week`, `day`"
													}
												},
												"additionalProperties": false,
												"required": ["type", "value", "unit"]
											},
											{
												"type": "object",
												"properties": {
													"type": {
														"type": "string",
														"const": "relative",
														"description": "Always `relative`"
													},
													"value": {
														"type": "string",
														"enum": [
															"this_week",
															"the_past_week",
															"the_past_month",
															"the_past_year",
															"the_next_week",
															"the_next_month",
															"the_next_year"
														],
														"description": "One of: `this_week`, `the_past_week`, `the_past_month`, `the_past_year`, `the_next_week`, `the_next_month`, `the_next_year`"
													}
												},
												"additionalProperties": false,
												"required": ["type", "value"]
											},
											{
												"type": "object",
												"properties": {
													"type": {
														"type": "string",
														"const": "exact",
														"description": "Always `exact`"
													},
													"value": {
														"type": "object",
														"properties": {
															"type": {
																"type": "string",
																"const": "daterange",
																"description": "Always `daterange`"
															},
															"start_date": {
																"type": "string",
																"examples": ["1990-12-28"],
																"format": "date",
																"description": "Inclusive start of the range as an ISO 8601 date string, if any."
															},
															"end_date": {
																"type": "string",
																"examples": ["1991-01-04"],
																"format": "date",
																"description": "Inclusive end of the range as an ISO 8601 date string, if any."
															}
														},
														"additionalProperties": false,
														"required": ["type"],
														"description": "Use the is_empty operator to match an unset date."
													}
												},
												"additionalProperties": false,
												"required": ["type", "value"]
											}
										],
										"description": "The range to compare against."
									},
									"use_end": {
										"type": "boolean",
										"description": "Compare against the end of a date range rather than its start."
									}
								},
								"additionalProperties": false,
								"required": ["operator", "value"]
							},
							{
								"type": "object",
								"properties": {
									"operator": {
										"type": "string",
										"enum": ["is_empty", "is_not_empty"],
										"description": "Whether the property must be empty or set."
									}
								},
								"additionalProperties": false,
								"required": ["operator"]
							}
						],
						"description": "The comparison to apply. Use the arm matching the property's type."
					}
				},
				"additionalProperties": false,
				"required": ["property", "filter"]
			},
			"mentionRichTextItemRequest": {
				"type": "object",
				"properties": {
					"type": {
						"type": "string",
						"const": "mention",
						"description": "Always `mention`"
					},
					"mention": {
						"oneOf": [
							{
								"type": "object",
								"properties": {
									"type": {
										"type": "string",
										"const": "user",
										"description": "Always `user`"
									},
									"user": {
										"$ref": "#/components/schemas/partialUserObjectRequest",
										"description": "Details of the user mention."
									}
								},
								"required": ["user"],
								"title": "User"
							},
							{
								"type": "object",
								"properties": {
									"type": {
										"type": "string",
										"const": "date",
										"description": "Always `date`"
									},
									"date": {
										"$ref": "#/components/schemas/dateRequest",
										"description": "Details of the date mention."
									}
								},
								"required": ["date"],
								"title": "Date"
							},
							{
								"type": "object",
								"properties": {
									"type": {
										"type": "string",
										"const": "page",
										"description": "Always `page`"
									},
									"page": {
										"type": "object",
										"properties": {
											"id": {
												"$ref": "#/components/schemas/idRequest",
												"description": "The ID of the page in the mention."
											}
										},
										"required": ["id"],
										"description": "Details of the page mention."
									}
								},
								"required": ["page"],
								"title": "Page"
							},
							{
								"type": "object",
								"properties": {
									"type": {
										"type": "string",
										"const": "database",
										"description": "Always `database`"
									},
									"database": {
										"type": "object",
										"properties": {
											"id": {
												"$ref": "#/components/schemas/idRequest",
												"description": "The ID of the database in the mention."
											}
										},
										"required": ["id"],
										"description": "Details of the database mention."
									}
								},
								"required": ["database"],
								"title": "Database"
							},
							{
								"type": "object",
								"properties": {
									"type": {
										"type": "string",
										"const": "template_mention",
										"description": "Always `template_mention`"
									},
									"template_mention": {
										"$ref": "#/components/schemas/templateMentionRequest",
										"description": "Details of the template mention."
									}
								},
								"required": ["template_mention"],
								"title": "Template Mention"
							},
							{
								"type": "object",
								"properties": {
									"type": {
										"type": "string",
										"const": "custom_emoji",
										"description": "Always `custom_emoji`"
									},
									"custom_emoji": {
										"type": "object",
										"properties": {
											"id": {
												"$ref": "#/components/schemas/idRequest",
												"description": "The ID of the custom emoji."
											},
											"name": {
												"type": "string",
												"description": "The name of the custom emoji."
											},
											"url": {
												"type": "string",
												"description": "The URL of the custom emoji."
											}
										},
										"required": ["id"],
										"description": "Details of the custom emoji mention."
									}
								},
								"required": ["custom_emoji"],
								"title": "Custom Emoji"
							}
						],
						"description": "Mention objects represent an inline mention of a database, date, link preview mention, page, template mention, or user. A mention is created in the Notion UI when a user types `@` followed by the name of the reference."
					}
				},
				"required": ["mention"],
				"title": "Mention"
			},
			"mentionRichTextItemResponse": {
				"type": "object",
				"properties": {
					"type": {
						"type": "string",
						"const": "mention",
						"description": "Always `mention`"
					},
					"mention": {
						"oneOf": [
							{
								"type": "object",
								"properties": {
									"type": {
										"type": "string",
										"const": "user",
										"description": "Always `user`"
									},
									"user": {
										"$ref": "#/components/schemas/userValueResponse",
										"description": "Details of the user mention."
									}
								},
								"additionalProperties": false,
								"required": ["type", "user"],
								"title": "User"
							},
							{
								"type": "object",
								"properties": {
									"type": {
										"type": "string",
										"const": "date",
										"description": "Always `date`"
									},
									"date": {
										"$ref": "#/components/schemas/dateResponse",
										"description": "Details of the date mention."
									}
								},
								"additionalProperties": false,
								"required": ["type", "date"],
								"title": "Date"
							},
							{
								"type": "object",
								"properties": {
									"type": {
										"type": "string",
										"const": "link_preview",
										"description": "Always `link_preview`"
									},
									"link_preview": {
										"$ref": "#/components/schemas/linkPreviewMentionResponse",
										"description": "Details of the link preview mention."
									}
								},
								"additionalProperties": false,
								"required": ["type", "link_preview"],
								"title": "Link Preview"
							},
							{
								"type": "object",
								"properties": {
									"type": {
										"type": "string",
										"const": "link_mention",
										"description": "Always `link_mention`"
									},
									"link_mention": {
										"$ref": "#/components/schemas/linkMentionResponse",
										"description": "Details of the link mention."
									}
								},
								"additionalProperties": false,
								"required": ["type", "link_mention"],
								"title": "Link Mention"
							},
							{
								"type": "object",
								"properties": {
									"type": {
										"type": "string",
										"const": "page",
										"description": "Always `page`"
									},
									"page": {
										"type": "object",
										"properties": {
											"id": {
												"$ref": "#/components/schemas/idResponse",
												"description": "The ID of the page in the mention."
											}
										},
										"additionalProperties": false,
										"required": ["id"],
										"description": "Details of the page mention."
									}
								},
								"additionalProperties": false,
								"required": ["type", "page"],
								"title": "Page"
							},
							{
								"type": "object",
								"properties": {
									"type": {
										"type": "string",
										"const": "database",
										"description": "Always `database`"
									},
									"database": {
										"type": "object",
										"properties": {
											"id": {
												"$ref": "#/components/schemas/idResponse",
												"description": "The ID of the database in the mention."
											}
										},
										"additionalProperties": false,
										"required": ["id"],
										"description": "Details of the database mention."
									}
								},
								"additionalProperties": false,
								"required": ["type", "database"],
								"title": "Database"
							},
							{
								"type": "object",
								"properties": {
									"type": {
										"type": "string",
										"const": "template_mention",
										"description": "Always `template_mention`"
									},
									"template_mention": {
										"$ref": "#/components/schemas/templateMentionResponse",
										"description": "Details of the template mention."
									}
								},
								"additionalProperties": false,
								"required": ["type", "template_mention"],
								"title": "Template Mention"
							},
							{
								"type": "object",
								"properties": {
									"type": {
										"type": "string",
										"const": "custom_emoji",
										"description": "Always `custom_emoji`"
									},
									"custom_emoji": {
										"$ref": "#/components/schemas/customEmojiResponse",
										"description": "Details of the custom emoji mention."
									}
								},
								"additionalProperties": false,
								"required": ["type", "custom_emoji"],
								"title": "Custom Emoji"
							}
						],
						"description": "Mention objects represent an inline mention of a database, date, link preview mention, page, template mention, or user. A mention is created in the Notion UI when a user types `@` followed by the name of the reference."
					}
				},
				"required": ["type", "mention"],
				"title": "Mention"
			},
			"multiSelectDatabasePropertyConfigResponse": {
				"type": "object",
				"properties": {
					"type": {
						"type": "string",
						"const": "multi_select",
						"description": "Always `multi_select`"
					},
					"multi_select": {
						"type": "object",
						"properties": {
							"options": {
								"type": "array",
								"items": {
									"$ref": "#/components/schemas/selectPropertyResponse"
								},
								"maxItems": 100
							}
						},
						"additionalProperties": false,
						"required": ["options"]
					}
				},
				"required": ["type", "multi_select"],
				"title": "Multi Select"
			},
			"multiSelectPropertyItemObjectResponse": {
				"title": "Multi Select",
				"type": "object",
				"properties": {
					"type": {
						"type": "string",
						"const": "multi_select"
					},
					"multi_select": {
						"type": "array",
						"items": {
							"$ref": "#/components/schemas/partialSelectResponse"
						},
						"maxItems": 100
					},
					"object": {
						"type": "string",
						"const": "property_item"
					},
					"id": {
						"type": "string"
					}
				},
				"required": ["type", "multi_select", "object", "id"]
			},
			"multiSelectSimplePropertyValueResponse": {
				"type": "object",
				"properties": {
					"type": {
						"type": "string",
						"const": "multi_select",
						"description": "Always `multi_select`"
					},
					"multi_select": {
						"type": "array",
						"items": {
							"$ref": "#/components/schemas/partialSelectPropertyValueResponse"
						},
						"maxItems": 100
					}
				},
				"additionalProperties": false,
				"required": ["type", "multi_select"],
				"title": "Multi Select"
			},
			"noticonColor": {
				"type": "string",
				"enum": [
					"gray",
					"lightgray",
					"brown",
					"yellow",
					"orange",
					"green",
					"blue",
					"purple",
					"pink",
					"red"
				],
				"description": "One of: `gray`, `lightgray`, `brown`, `yellow`, `orange`, `green`, `blue`, `purple`, `pink`, `red`"
			},
			"noticonIconResponse": {
				"type": "object",
				"properties": {
					"name": {
						"$ref": "#/components/schemas/noticonName",
						"description": "The name of the Notion icon (e.g. pizza, meeting, home). See the Notion icon picker for valid names."
					},
					"color": {
						"$ref": "#/components/schemas/noticonColor",
						"description": "The color variant of the icon. Valid values: gray, lightgray, brown, yellow, orange, green, blue, purple, pink, red."
					}
				},
				"additionalProperties": false,
				"required": ["name", "color"]
			},
			"noticonName": {
				"type": "string",
				"examples": ["pizza", "meeting", "home", "star", "robot"]
			},
			"numberDatabasePropertyConfigResponse": {
				"type": "object",
				"properties": {
					"type": {
						"type": "string",
						"const": "number",
						"description": "Always `number`"
					},
					"number": {
						"type": "object",
						"properties": {
							"format": {
								"$ref": "#/components/schemas/numberFormat",
								"description": "The number format for the property."
							}
						},
						"additionalProperties": false,
						"required": ["format"]
					}
				},
				"required": ["type", "number"],
				"title": "Number"
			},
			"numberFormat": {
				"type": "string",
				"example": "number"
			},
			"numberFormulaPropertyResponse": {
				"title": "Number",
				"type": "object",
				"properties": {
					"type": {
						"type": "string",
						"const": "number"
					},
					"number": {
						"type": ["number", "null"]
					}
				},
				"required": ["type", "number"]
			},
			"numberFormulaPropertyValueResponse": {
				"type": "object",
				"properties": {
					"type": {
						"type": "string",
						"const": "number",
						"description": "Always `number`"
					},
					"number": {
						"oneOf": [
							{
								"type": "number"
							},
							{
								"type": "null"
							}
						]
					}
				},
				"additionalProperties": false,
				"required": ["type", "number"],
				"title": "Number"
			},
			"numberPartialRollupValueResponse": {
				"type": "object",
				"properties": {
					"type": {
						"type": "string",
						"const": "number",
						"description": "Always `number`"
					},
					"number": {
						"oneOf": [
							{
								"type": "number"
							},
							{
								"type": "null"
							}
						]
					}
				},
				"required": ["type", "number"],
				"title": "Number"
			},
			"numberPropertyItemObjectResponse": {
				"title": "Number",
				"type": "object",
				"properties": {
					"type": {
						"type": "string",
						"const": "number"
					},
					"number": {
						"type": ["number", "null"]
					},
					"object": {
						"type": "string",
						"const": "property_item"
					},
					"id": {
						"type": "string"
					}
				},
				"required": ["type", "number", "object", "id"]
			},
			"numberSimplePropertyValueResponse": {
				"type": "object",
				"properties": {
					"type": {
						"type": "string",
						"const": "number",
						"description": "Always `number`"
					},
					"number": {
						"oneOf": [
							{
								"type": "number"
							},
							{
								"type": "null"
							}
						]
					}
				},
				"additionalProperties": false,
				"required": ["type", "number"],
				"title": "Number"
			},
			"numberedListFormat": {
				"type": "string",
				"enum": ["numbers", "letters", "roman"]
			},
			"numberedListItemBlockObjectResponse": {
				"title": "Numbered List Item",
				"type": "object",
				"properties": {
					"type": {
						"type": "string",
						"const": "numbered_list_item"
					},
					"numbered_list_item": {
						"$ref": "#/components/schemas/contentWithRichTextAndColorAndListResponse"
					},
					"parent": {
						"$ref": "#/components/schemas/parentForBlockBasedObjectResponse"
					},
					"object": {
						"type": "string",
						"const": "block"
					},
					"id": {
						"type": "string",
						"format": "uuid"
					},
					"created_time": {
						"type": "string",
						"format": "date-time"
					},
					"created_by": {
						"$ref": "#/components/schemas/partialUserObjectResponse"
					},
					"last_edited_time": {
						"type": "string",
						"format": "date-time"
					},
					"last_edited_by": {
						"$ref": "#/components/schemas/partialUserObjectResponse"
					},
					"has_children": {
						"type": "boolean"
					},
					"in_trash": {
						"type": "boolean"
					}
				},
				"required": [
					"type",
					"numbered_list_item",
					"parent",
					"object",
					"id",
					"created_time",
					"created_by",
					"last_edited_time",
					"last_edited_by",
					"has_children",
					"in_trash"
				]
			},
			"pageCoverResponse": {
				"oneOf": [
					{
						"$ref": "#/components/schemas/filePageCoverResponse"
					},
					{
						"$ref": "#/components/schemas/externalPageCoverResponse"
					}
				]
			},
			"pageIconRequest": {
				"oneOf": [
					{
						"$ref": "#/components/schemas/fileUploadPageIconRequest"
					},
					{
						"$ref": "#/components/schemas/emojiPageIconRequest"
					},
					{
						"$ref": "#/components/schemas/externalPageIconRequest"
					},
					{
						"$ref": "#/components/schemas/customEmojiPageIconRequest"
					},
					{
						"$ref": "#/components/schemas/iconPageIconRequest"
					}
				]
			},
			"pageIconResponse": {
				"oneOf": [
					{
						"$ref": "#/components/schemas/emojiPageIconResponse"
					},
					{
						"$ref": "#/components/schemas/filePageIconResponse"
					},
					{
						"$ref": "#/components/schemas/externalPageIconResponse"
					},
					{
						"$ref": "#/components/schemas/customEmojiPageIconResponse"
					},
					{
						"$ref": "#/components/schemas/iconPageIconResponse"
					}
				]
			},
			"pageIdParentForBlockBasedObjectResponse": {
				"type": "object",
				"properties": {
					"type": {
						"type": "string",
						"const": "page_id",
						"description": "The parent type."
					},
					"page_id": {
						"$ref": "#/components/schemas/idResponse",
						"description": "The ID of the parent page."
					}
				},
				"additionalProperties": false,
				"required": ["type", "page_id"]
			},
			"pageLayoutPropertiesModule": {
				"type": "object",
				"required": ["type"],
				"additionalProperties": false,
				"properties": {
					"type": {
						"type": "string",
						"enum": ["properties"],
						"description": "The module type."
					},
					"properties": {
						"type": "array",
						"description": "Properties in order. Unlisted properties follow in their current order and show. Don't list the title or properties placed elsewhere in the layout.",
						"items": {
							"$ref": "#/components/schemas/pageLayoutPropertyEntry"
						}
					}
				}
			},
			"pageLayoutPropertiesSectionsModule": {
				"type": "object",
				"required": ["type", "sections"],
				"additionalProperties": false,
				"properties": {
					"type": {
						"type": "string",
						"enum": ["properties"],
						"description": "The module type."
					},
					"sections": {
						"type": "array",
						"minItems": 1,
						"description": "Named sections in order. Unlisted properties go in the last section and show.",
						"items": {
							"type": "object",
							"required": ["name", "properties"],
							"additionalProperties": false,
							"properties": {
								"name": {
									"type": "string",
									"minLength": 1,
									"description": "The section name."
								},
								"properties": {
									"type": "array",
									"description": "Properties in this section, in order. Don't list the title or properties placed elsewhere in the layout.",
									"items": {
										"$ref": "#/components/schemas/pageLayoutPropertyEntry"
									}
								}
							}
						}
					}
				}
			},
			"pageLayoutPropertyEntry": {
				"type": "object",
				"required": ["property"],
				"additionalProperties": false,
				"properties": {
					"property": {
						"type": "string",
						"description": "The property name."
					},
					"visibility": {
						"type": "string",
						"enum": ["show", "hide_if_empty", "hide"],
						"description": "Defaults to show. Changes how pages look, not who can see the value."
					}
				}
			},
			"pageLayoutPropertyModule": {
				"type": "object",
				"required": ["type", "property"],
				"additionalProperties": false,
				"properties": {
					"type": {
						"type": "string",
						"enum": ["property"],
						"description": "The module type."
					},
					"property": {
						"type": "string",
						"description": "The name of the property to show."
					},
					"config": {
						"type": "object",
						"description": "How the property looks.",
						"required": ["style"],
						"additionalProperties": false,
						"properties": {
							"style": {
								"type": "string",
								"enum": [
									"compact",
									"large",
									"small",
									"landscape",
									"portrait",
									"square",
									"map",
									"text"
								],
								"description": "Display style. Which styles apply depends on the property type."
							}
						}
					}
				}
			},
			"pageObjectResponse": {
				"type": "object",
				"properties": {
					"object": {
						"type": "string",
						"const": "page",
						"description": "The page object type name."
					},
					"id": {
						"$ref": "#/components/schemas/idResponse",
						"description": "The ID of the page."
					},
					"created_time": {
						"type": "string",
						"format": "date-time",
						"description": "Date and time when this page was created."
					},
					"last_edited_time": {
						"type": "string",
						"format": "date-time",
						"description": "Date and time when this page was last edited."
					},
					"in_trash": {
						"type": "boolean",
						"description": "Whether the page is in trash."
					},
					"is_archived": {
						"type": "boolean",
						"description": "Whether the page has been archived."
					},
					"is_locked": {
						"type": "boolean",
						"description": "Whether the page is locked from editing in the Notion app UI."
					},
					"url": {
						"type": "string",
						"description": "The URL of the Notion page."
					},
					"public_url": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						],
						"description": "The public URL of the Notion page, if it has been published to the web."
					},
					"parent": {
						"$ref": "#/components/schemas/parentForBlockBasedObjectResponse",
						"description": "Information about the page's parent."
					},
					"properties": {
						"type": "object",
						"additionalProperties": {
							"$ref": "#/components/schemas/pagePropertyValueWithIdResponse"
						},
						"description": "Property values of this page."
					},
					"icon": {
						"oneOf": [
							{
								"$ref": "#/components/schemas/pageIconResponse"
							},
							{
								"type": "null"
							}
						],
						"description": "Page icon."
					},
					"cover": {
						"oneOf": [
							{
								"$ref": "#/components/schemas/pageCoverResponse"
							},
							{
								"type": "null"
							}
						],
						"description": "Page cover image."
					},
					"created_by": {
						"$ref": "#/components/schemas/partialUserObjectResponse",
						"description": "User who created the page."
					},
					"last_edited_by": {
						"$ref": "#/components/schemas/partialUserObjectResponse",
						"description": "User who last edited the page."
					}
				},
				"additionalProperties": false,
				"required": [
					"object",
					"id",
					"created_time",
					"last_edited_time",
					"in_trash",
					"is_archived",
					"is_locked",
					"url",
					"public_url",
					"parent",
					"properties",
					"icon",
					"cover",
					"created_by",
					"last_edited_by"
				]
			},
			"pagePropertyValueWithIdResponse": {
				"allOf": [
					{
						"$ref": "#/components/schemas/idObjectResponse"
					},
					{
						"oneOf": [
							{
								"$ref": "#/components/schemas/simpleOrArrayPropertyValueResponse"
							},
							{
								"$ref": "#/components/schemas/partialRollupPropertyResponse"
							}
						]
					}
				]
			},
			"paragraphBlockObjectResponse": {
				"title": "Paragraph",
				"type": "object",
				"properties": {
					"type": {
						"type": "string",
						"const": "paragraph"
					},
					"paragraph": {
						"$ref": "#/components/schemas/contentWithRichTextColorAndIconResponse"
					},
					"parent": {
						"$ref": "#/components/schemas/parentForBlockBasedObjectResponse"
					},
					"object": {
						"type": "string",
						"const": "block"
					},
					"id": {
						"type": "string",
						"format": "uuid"
					},
					"created_time": {
						"type": "string",
						"format": "date-time"
					},
					"created_by": {
						"$ref": "#/components/schemas/partialUserObjectResponse"
					},
					"last_edited_time": {
						"type": "string",
						"format": "date-time"
					},
					"last_edited_by": {
						"$ref": "#/components/schemas/partialUserObjectResponse"
					},
					"has_children": {
						"type": "boolean"
					},
					"in_trash": {
						"type": "boolean"
					}
				},
				"required": [
					"type",
					"paragraph",
					"parent",
					"object",
					"id",
					"created_time",
					"created_by",
					"last_edited_time",
					"last_edited_by",
					"has_children",
					"in_trash"
				]
			},
			"parentForBlockBasedObjectResponse": {
				"oneOf": [
					{
						"$ref": "#/components/schemas/databaseParentResponse"
					},
					{
						"$ref": "#/components/schemas/dataSourceParentResponse"
					},
					{
						"$ref": "#/components/schemas/pageIdParentForBlockBasedObjectResponse"
					},
					{
						"$ref": "#/components/schemas/blockIdParentForBlockBasedObjectResponse"
					},
					{
						"$ref": "#/components/schemas/agentIdParentForBlockBasedObjectResponse"
					},
					{
						"$ref": "#/components/schemas/workspaceParentForBlockBasedObjectResponse"
					}
				]
			},
			"parentOfDataSourceResponse": {
				"oneOf": [
					{
						"$ref": "#/components/schemas/databaseParentResponse"
					},
					{
						"$ref": "#/components/schemas/dataSourceParentResponse"
					}
				],
				"description": "The parent of the data source. This is typically a database (`database_id`), but for externally synced data sources, can be another data source (`data_source_id`)."
			},
			"parentOfDatabaseResponse": {
				"oneOf": [
					{
						"$ref": "#/components/schemas/pageIdParentForBlockBasedObjectResponse"
					},
					{
						"$ref": "#/components/schemas/workspaceParentForBlockBasedObjectResponse"
					},
					{
						"$ref": "#/components/schemas/databaseParentResponse"
					},
					{
						"$ref": "#/components/schemas/blockIdParentForBlockBasedObjectResponse"
					}
				]
			},
			"partialBlockObjectResponse": {
				"type": "object",
				"properties": {
					"object": {
						"type": "string",
						"const": "block"
					},
					"id": {
						"type": "string",
						"format": "uuid"
					}
				},
				"required": ["object", "id"]
			},
			"partialDataSourceObjectResponse": {
				"type": "object",
				"properties": {
					"object": {
						"type": "string",
						"const": "data_source",
						"description": "The data source object type name."
					},
					"id": {
						"$ref": "#/components/schemas/idResponse",
						"description": "The ID of the data source."
					},
					"properties": {
						"type": "object",
						"additionalProperties": {
							"$ref": "#/components/schemas/databasePropertyConfigResponse"
						},
						"description": "The properties schema of the data source."
					}
				},
				"additionalProperties": false,
				"required": ["object", "id", "properties"]
			},
			"partialPageObjectResponse": {
				"type": "object",
				"properties": {
					"object": {
						"type": "string",
						"const": "page",
						"description": "The page object type name."
					},
					"id": {
						"$ref": "#/components/schemas/idResponse",
						"description": "The ID of the page."
					}
				},
				"additionalProperties": false,
				"required": ["object", "id"]
			},
			"partialRollupPropertyResponse": {
				"type": "object",
				"properties": {
					"type": {
						"type": "string",
						"const": "rollup",
						"description": "Always `rollup`"
					},
					"rollup": {
						"$ref": "#/components/schemas/partialRollupValueResponse"
					}
				},
				"additionalProperties": false,
				"required": ["type", "rollup"]
			},
			"partialRollupValueResponse": {
				"allOf": [
					{
						"$ref": "#/components/schemas/partialRollupValueResponseCommon"
					},
					{
						"oneOf": [
							{
								"$ref": "#/components/schemas/numberPartialRollupValueResponse"
							},
							{
								"$ref": "#/components/schemas/datePartialRollupValueResponse"
							},
							{
								"$ref": "#/components/schemas/arrayPartialRollupValueResponse"
							},
							{
								"$ref": "#/components/schemas/unsupportedPartialRollupValueResponse"
							}
						]
					}
				]
			},
			"partialRollupValueResponseCommon": {
				"type": "object",
				"properties": {
					"function": {
						"$ref": "#/components/schemas/rollupFunction",
						"description": "The function used for the rollup, e.g. count, count_values, percent_not_empty, max."
					}
				},
				"additionalProperties": false,
				"required": ["function"]
			},
			"partialSelectPropertyValueResponse": {
				"type": "object",
				"properties": {
					"id": {
						"type": "string"
					},
					"name": {
						"type": "string"
					},
					"color": {
						"type": "string",
						"enum": [
							"default",
							"gray",
							"brown",
							"orange",
							"yellow",
							"green",
							"blue",
							"purple",
							"pink",
							"red"
						],
						"description": "One of: `default`, `gray`, `brown`, `orange`, `yellow`, `green`, `blue`, `purple`, `pink`, `red`"
					}
				},
				"additionalProperties": false,
				"required": ["id", "name", "color"]
			},
			"partialSelectResponse": {
				"type": "object",
				"properties": {
					"id": {
						"type": "string"
					},
					"name": {
						"type": "string"
					},
					"color": {
						"$ref": "#/components/schemas/selectColor"
					}
				},
				"required": ["id", "name", "color"]
			},
			"partialUserObjectRequest": {
				"type": "object",
				"properties": {
					"id": {
						"$ref": "#/components/schemas/idRequest",
						"description": "The ID of the user."
					},
					"object": {
						"type": "string",
						"const": "user",
						"description": "The user object type name."
					}
				},
				"required": ["id"]
			},
			"partialUserObjectResponse": {
				"type": "object",
				"properties": {
					"id": {
						"$ref": "#/components/schemas/idResponse"
					},
					"object": {
						"type": "string",
						"const": "user",
						"description": "Always `user`"
					}
				},
				"additionalProperties": false,
				"required": ["id", "object"]
			},
			"pdfBlockObjectResponse": {
				"title": "Pdf",
				"type": "object",
				"properties": {
					"type": {
						"type": "string",
						"const": "pdf"
					},
					"pdf": {
						"$ref": "#/components/schemas/mediaContentWithFileAndCaptionResponse"
					},
					"parent": {
						"$ref": "#/components/schemas/parentForBlockBasedObjectResponse"
					},
					"object": {
						"type": "string",
						"const": "block"
					},
					"id": {
						"type": "string",
						"format": "uuid"
					},
					"created_time": {
						"type": "string",
						"format": "date-time"
					},
					"created_by": {
						"$ref": "#/components/schemas/partialUserObjectResponse"
					},
					"last_edited_time": {
						"type": "string",
						"format": "date-time"
					},
					"last_edited_by": {
						"$ref": "#/components/schemas/partialUserObjectResponse"
					},
					"has_children": {
						"type": "boolean"
					},
					"in_trash": {
						"type": "boolean"
					}
				},
				"required": [
					"type",
					"pdf",
					"parent",
					"object",
					"id",
					"created_time",
					"created_by",
					"last_edited_time",
					"last_edited_by",
					"has_children",
					"in_trash"
				]
			},
			"peopleArrayBasedPropertyValueResponse": {
				"type": "object",
				"properties": {
					"type": {
						"type": "string",
						"const": "people",
						"description": "Always `people`"
					},
					"people": {
						"type": "array",
						"items": {
							"oneOf": [
								{
									"$ref": "#/components/schemas/userValueResponse"
								},
								{
									"$ref": "#/components/schemas/groupObjectResponse"
								}
							]
						},
						"maxItems": 100
					}
				},
				"additionalProperties": false,
				"required": ["type", "people"],
				"title": "People"
			},
			"peopleDatabasePropertyConfigResponse": {
				"type": "object",
				"properties": {
					"type": {
						"type": "string",
						"const": "people",
						"description": "Always `people`"
					},
					"people": {
						"$ref": "#/components/schemas/emptyObject"
					}
				},
				"required": ["type", "people"],
				"title": "People"
			},
			"peoplePropertyItemObjectResponse": {
				"title": "People",
				"type": "object",
				"properties": {
					"type": {
						"type": "string",
						"const": "people"
					},
					"people": {
						"anyOf": [
							{
								"$ref": "#/components/schemas/partialUserObjectResponse"
							},
							{
								"$ref": "#/components/schemas/userObjectResponse"
							}
						]
					},
					"object": {
						"type": "string",
						"const": "property_item"
					},
					"id": {
						"type": "string"
					}
				},
				"required": ["type", "people", "object", "id"]
			},
			"permissionGroupObjectResponse": {
				"type": "object",
				"properties": {
					"object": {
						"type": "string",
						"const": "group",
						"description": "The group object type."
					},
					"id": {
						"$ref": "#/components/schemas/idResponse",
						"description": "The ID of the group."
					},
					"name": {
						"type": "string",
						"description": "The name of the group."
					}
				},
				"additionalProperties": false,
				"required": ["object", "id", "name"]
			},
			"personUserObjectResponse": {
				"type": "object",
				"properties": {
					"type": {
						"type": "string",
						"const": "person",
						"description": "Indicates this user is a person."
					},
					"person": {
						"type": "object",
						"properties": {
							"email": {
								"type": "string",
								"description": "The email of the person."
							},
							"email_verified": {
								"type": "boolean",
								"description": "Whether the person's email is verified."
							}
						},
						"additionalProperties": false,
						"description": "Details about the person, when the `type` of the user is `person`."
					}
				},
				"required": ["type", "person"],
				"title": "Person"
			},
			"phoneNumberDatabasePropertyConfigResponse": {
				"type": "object",
				"properties": {
					"type": {
						"type": "string",
						"const": "phone_number",
						"description": "Always `phone_number`"
					},
					"phone_number": {
						"$ref": "#/components/schemas/emptyObject"
					}
				},
				"required": ["type", "phone_number"],
				"title": "Phone Number"
			},
			"phoneNumberPropertyItemObjectResponse": {
				"title": "Phone Number",
				"type": "object",
				"properties": {
					"type": {
						"type": "string",
						"const": "phone_number"
					},
					"phone_number": {
						"type": ["string", "null"]
					},
					"object": {
						"type": "string",
						"const": "property_item"
					},
					"id": {
						"type": "string"
					}
				},
				"required": ["type", "phone_number", "object", "id"]
			},
			"phoneNumberSimplePropertyValueResponse": {
				"type": "object",
				"properties": {
					"type": {
						"type": "string",
						"const": "phone_number",
						"description": "Always `phone_number`"
					},
					"phone_number": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					}
				},
				"additionalProperties": false,
				"required": ["type", "phone_number"],
				"title": "Phone Number"
			},
			"placePropertyItemObjectResponse": {
				"title": "Place",
				"type": "object",
				"properties": {
					"type": {
						"type": "string",
						"const": "place"
					},
					"place": {
						"type": ["object", "null"],
						"properties": {
							"lat": {
								"type": "number"
							},
							"lon": {
								"type": "number"
							},
							"name": {
								"type": ["string", "null"]
							},
							"address": {
								"type": ["string", "null"]
							},
							"aws_place_id": {
								"type": ["string", "null"]
							},
							"google_place_id": {
								"type": ["string", "null"]
							}
						},
						"required": ["lat", "lon"]
					},
					"object": {
						"type": "string",
						"const": "property_item"
					},
					"id": {
						"type": "string"
					}
				},
				"required": ["type", "place", "object", "id"]
			},
			"placePropertyValueResponse": {
				"type": "object",
				"properties": {
					"lat": {
						"type": "number"
					},
					"lon": {
						"type": "number"
					},
					"name": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"address": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"aws_place_id": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"google_place_id": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					}
				},
				"additionalProperties": false,
				"required": ["lat", "lon"]
			},
			"placeSimplePropertyValueResponse": {
				"type": "object",
				"properties": {
					"type": {
						"type": "string",
						"const": "place",
						"description": "Always `place`"
					},
					"place": {
						"oneOf": [
							{
								"$ref": "#/components/schemas/placePropertyValueResponse"
							},
							{
								"type": "null"
							}
						]
					}
				},
				"additionalProperties": false,
				"required": ["type", "place"],
				"title": "Place"
			},
			"propertyDescriptionRequest": {
				"type": "string",
				"minLength": 1,
				"maxLength": 280
			},
			"propertyItemListResponse": {
				"$ref": "#/components/schemas/propertyItemPropertyItemListResponse"
			},
			"propertyItemObjectResponse": {
				"anyOf": [
					{
						"$ref": "#/components/schemas/numberPropertyItemObjectResponse"
					},
					{
						"$ref": "#/components/schemas/urlPropertyItemObjectResponse"
					},
					{
						"$ref": "#/components/schemas/selectPropertyItemObjectResponse"
					},
					{
						"$ref": "#/components/schemas/multiSelectPropertyItemObjectResponse"
					},
					{
						"$ref": "#/components/schemas/statusPropertyItemObjectResponse"
					},
					{
						"$ref": "#/components/schemas/datePropertyItemObjectResponse"
					},
					{
						"$ref": "#/components/schemas/emailPropertyItemObjectResponse"
					},
					{
						"$ref": "#/components/schemas/phoneNumberPropertyItemObjectResponse"
					},
					{
						"$ref": "#/components/schemas/checkboxPropertyItemObjectResponse"
					},
					{
						"$ref": "#/components/schemas/filesPropertyItemObjectResponse"
					},
					{
						"$ref": "#/components/schemas/createdByPropertyItemObjectResponse"
					},
					{
						"$ref": "#/components/schemas/createdTimePropertyItemObjectResponse"
					},
					{
						"$ref": "#/components/schemas/lastEditedByPropertyItemObjectResponse"
					},
					{
						"$ref": "#/components/schemas/lastEditedTimePropertyItemObjectResponse"
					},
					{
						"$ref": "#/components/schemas/formulaPropertyItemObjectResponse"
					},
					{
						"$ref": "#/components/schemas/buttonPropertyItemObjectResponse"
					},
					{
						"$ref": "#/components/schemas/uniqueIdPropertyItemObjectResponse"
					},
					{
						"$ref": "#/components/schemas/verificationPropertyItemObjectResponse"
					},
					{
						"$ref": "#/components/schemas/placePropertyItemObjectResponse"
					},
					{
						"$ref": "#/components/schemas/titlePropertyItemObjectResponse"
					},
					{
						"$ref": "#/components/schemas/richTextPropertyItemObjectResponse"
					},
					{
						"$ref": "#/components/schemas/peoplePropertyItemObjectResponse"
					},
					{
						"$ref": "#/components/schemas/relationPropertyItemObjectResponse"
					},
					{
						"$ref": "#/components/schemas/rollupPropertyItemObjectResponse"
					}
				]
			},
			"propertyItemPropertyItemListResponse": {
				"title": "Property Item",
				"type": "object",
				"properties": {
					"type": {
						"type": "string",
						"const": "property_item"
					},
					"property_item": {
						"anyOf": [
							{
								"title": "Title",
								"type": "object",
								"properties": {
									"type": {
										"type": "string",
										"const": "title"
									},
									"title": {
										"$ref": "#/components/schemas/emptyObject"
									},
									"next_url": {
										"type": ["string", "null"]
									},
									"id": {
										"type": "string"
									}
								},
								"required": ["type", "title", "next_url", "id"]
							},
							{
								"title": "Rich Text",
								"type": "object",
								"properties": {
									"type": {
										"type": "string",
										"const": "rich_text"
									},
									"rich_text": {
										"$ref": "#/components/schemas/emptyObject"
									},
									"next_url": {
										"type": ["string", "null"]
									},
									"id": {
										"type": "string"
									}
								},
								"required": ["type", "rich_text", "next_url", "id"]
							},
							{
								"title": "People",
								"type": "object",
								"properties": {
									"type": {
										"type": "string",
										"const": "people"
									},
									"people": {
										"$ref": "#/components/schemas/emptyObject"
									},
									"next_url": {
										"type": ["string", "null"]
									},
									"id": {
										"type": "string"
									}
								},
								"required": ["type", "people", "next_url", "id"]
							},
							{
								"title": "Relation",
								"type": "object",
								"properties": {
									"type": {
										"type": "string",
										"const": "relation"
									},
									"relation": {
										"$ref": "#/components/schemas/emptyObject"
									},
									"next_url": {
										"type": ["string", "null"]
									},
									"id": {
										"type": "string"
									}
								},
								"required": ["type", "relation", "next_url", "id"]
							},
							{
								"title": "Rollup",
								"type": "object",
								"properties": {
									"type": {
										"type": "string",
										"const": "rollup"
									},
									"rollup": {
										"anyOf": [
											{
												"title": "Number",
												"type": "object",
												"properties": {
													"type": {
														"type": "string",
														"const": "number"
													},
													"number": {
														"type": ["number", "null"]
													},
													"function": {
														"$ref": "#/components/schemas/rollupFunction"
													}
												},
												"required": ["type", "number", "function"]
											},
											{
												"title": "Date",
												"type": "object",
												"properties": {
													"type": {
														"type": "string",
														"const": "date"
													},
													"date": {
														"anyOf": [
															{
																"$ref": "#/components/schemas/dateResponse"
															},
															{
																"type": "null"
															}
														]
													},
													"function": {
														"$ref": "#/components/schemas/rollupFunction"
													}
												},
												"required": ["type", "date", "function"]
											},
											{
												"title": "Array",
												"type": "object",
												"properties": {
													"type": {
														"type": "string",
														"const": "array"
													},
													"array": {
														"type": "array",
														"items": {
															"$ref": "#/components/schemas/emptyObject"
														},
														"maxItems": 100
													},
													"function": {
														"$ref": "#/components/schemas/rollupFunction"
													}
												},
												"required": ["type", "array", "function"]
											},
											{
												"title": "Unsupported",
												"type": "object",
												"properties": {
													"type": {
														"type": "string",
														"const": "unsupported"
													},
													"unsupported": {
														"$ref": "#/components/schemas/emptyObject"
													},
													"function": {
														"$ref": "#/components/schemas/rollupFunction"
													}
												},
												"required": ["type", "unsupported", "function"]
											},
											{
												"title": "Incomplete",
												"type": "object",
												"properties": {
													"type": {
														"type": "string",
														"const": "incomplete"
													},
													"incomplete": {
														"$ref": "#/components/schemas/emptyObject"
													},
													"function": {
														"$ref": "#/components/schemas/rollupFunction"
													}
												},
												"required": ["type", "incomplete", "function"]
											}
										]
									},
									"next_url": {
										"type": ["string", "null"]
									},
									"id": {
										"type": "string"
									}
								},
								"required": ["type", "rollup", "next_url", "id"]
							}
						]
					},
					"object": {
						"type": "string",
						"const": "list"
					},
					"next_cursor": {
						"type": ["string", "null"]
					},
					"has_more": {
						"type": "boolean"
					},
					"results": {
						"type": "array",
						"items": {
							"$ref": "#/components/schemas/propertyItemObjectResponse"
						}
					}
				},
				"required": [
					"type",
					"property_item",
					"object",
					"next_cursor",
					"has_more",
					"results"
				]
			},
			"publicApiCommonErrorResponse": {
				"type": "object",
				"properties": {
					"object": {
						"const": "error"
					},
					"message": {
						"type": "string"
					},
					"additional_data": {
						"type": "object",
						"additionalProperties": {
							"oneOf": [
								{
									"type": "string"
								},
								{
									"type": "array",
									"items": {
										"type": "string"
									}
								}
							]
						}
					}
				},
				"required": ["object", "message"]
			},
			"quoteBlockObjectResponse": {
				"title": "Quote",
				"type": "object",
				"properties": {
					"type": {
						"type": "string",
						"const": "quote"
					},
					"quote": {
						"$ref": "#/components/schemas/contentWithRichTextAndColorResponse"
					},
					"parent": {
						"$ref": "#/components/schemas/parentForBlockBasedObjectResponse"
					},
					"object": {
						"type": "string",
						"const": "block"
					},
					"id": {
						"type": "string",
						"format": "uuid"
					},
					"created_time": {
						"type": "string",
						"format": "date-time"
					},
					"created_by": {
						"$ref": "#/components/schemas/partialUserObjectResponse"
					},
					"last_edited_time": {
						"type": "string",
						"format": "date-time"
					},
					"last_edited_by": {
						"$ref": "#/components/schemas/partialUserObjectResponse"
					},
					"has_children": {
						"type": "boolean"
					},
					"in_trash": {
						"type": "boolean"
					}
				},
				"required": [
					"type",
					"quote",
					"parent",
					"object",
					"id",
					"created_time",
					"created_by",
					"last_edited_time",
					"last_edited_by",
					"has_children",
					"in_trash"
				]
			},
			"relationArrayBasedPropertyValueResponse": {
				"type": "object",
				"properties": {
					"type": {
						"type": "string",
						"const": "relation",
						"description": "Always `relation`"
					},
					"relation": {
						"type": "array",
						"items": {
							"$ref": "#/components/schemas/relationItemPropertyValueResponse"
						},
						"maxItems": 100
					}
				},
				"additionalProperties": false,
				"required": ["type", "relation"],
				"title": "Relation"
			},
			"relationDatabasePropertyConfigResponse": {
				"type": "object",
				"properties": {
					"type": {
						"type": "string",
						"const": "relation",
						"description": "Always `relation`"
					},
					"relation": {
						"$ref": "#/components/schemas/databasePropertyRelationConfigResponse"
					}
				},
				"required": ["type", "relation"],
				"title": "Relation"
			},
			"relationItemPropertyValueResponse": {
				"type": "object",
				"properties": {
					"id": {
						"$ref": "#/components/schemas/idResponse"
					}
				},
				"additionalProperties": false,
				"required": ["id"]
			},
			"relationPropertyItemObjectResponse": {
				"title": "Relation",
				"type": "object",
				"properties": {
					"type": {
						"type": "string",
						"const": "relation"
					},
					"relation": {
						"type": "object",
						"properties": {
							"id": {
								"type": "string",
								"format": "uuid"
							}
						},
						"required": ["id"]
					},
					"object": {
						"type": "string",
						"const": "property_item"
					},
					"id": {
						"type": "string"
					}
				},
				"required": ["type", "relation", "object", "id"]
			},
			"requestStatusResponse": {
				"type": "object",
				"properties": {
					"type": {
						"type": "string",
						"enum": ["complete", "incomplete"],
						"description": "Whether the result set is complete or incomplete. `incomplete` means the response does not include all rows that match the query parameters (e.g. due to a server-side pagination depth limit)."
					},
					"incomplete_reason": {
						"type": "string",
						"const": "query_result_limit_reached",
						"description": "Why the result set is incomplete. Only present when `type` is `incomplete`."
					}
				},
				"additionalProperties": false,
				"required": ["type"]
			},
			"richTextArrayBasedPropertyValueResponse": {
				"type": "object",
				"properties": {
					"type": {
						"type": "string",
						"const": "rich_text",
						"description": "Always `rich_text`"
					},
					"rich_text": {
						"type": "array",
						"items": {
							"$ref": "#/components/schemas/richTextItemResponse"
						},
						"maxItems": 100
					}
				},
				"additionalProperties": false,
				"required": ["type", "rich_text"],
				"title": "Rich Text"
			},
			"richTextDatabasePropertyConfigResponse": {
				"type": "object",
				"properties": {
					"type": {
						"type": "string",
						"const": "rich_text",
						"description": "Always `rich_text`"
					},
					"rich_text": {
						"$ref": "#/components/schemas/emptyObject"
					}
				},
				"required": ["type", "rich_text"],
				"title": "Rich Text"
			},
			"richTextItemRequest": {
				"allOf": [
					{
						"$ref": "#/components/schemas/richTextItemRequestCommon"
					},
					{
						"oneOf": [
							{
								"$ref": "#/components/schemas/textRichTextItemRequest"
							},
							{
								"$ref": "#/components/schemas/mentionRichTextItemRequest"
							},
							{
								"$ref": "#/components/schemas/equationRichTextItemRequest"
							}
						]
					}
				]
			},
			"richTextItemRequestCommon": {
				"type": "object",
				"properties": {
					"annotations": {
						"$ref": "#/components/schemas/annotationRequest",
						"description": "All rich text objects contain an annotations object that sets the styling for the rich text."
					}
				}
			},
			"richTextItemResponse": {
				"allOf": [
					{
						"$ref": "#/components/schemas/richTextItemResponseCommon"
					},
					{
						"oneOf": [
							{
								"$ref": "#/components/schemas/textRichTextItemResponse"
							},
							{
								"$ref": "#/components/schemas/mentionRichTextItemResponse"
							},
							{
								"$ref": "#/components/schemas/equationRichTextItemResponse"
							}
						]
					}
				]
			},
			"richTextItemResponseCommon": {
				"type": "object",
				"properties": {
					"plain_text": {
						"type": "string",
						"description": "The plain text content of the rich text object, without any styling."
					},
					"href": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						],
						"description": "A URL that the rich text object links to or mentions."
					},
					"annotations": {
						"$ref": "#/components/schemas/annotationResponse",
						"description": "All rich text objects contain an annotations object that sets the styling for the rich text."
					}
				},
				"additionalProperties": false,
				"required": ["plain_text", "href", "annotations"]
			},
			"richTextPropertyItemObjectResponse": {
				"title": "Rich Text",
				"type": "object",
				"properties": {
					"type": {
						"type": "string",
						"const": "rich_text"
					},
					"rich_text": {
						"$ref": "#/components/schemas/richTextItemResponse"
					},
					"object": {
						"type": "string",
						"const": "property_item"
					},
					"id": {
						"type": "string"
					}
				},
				"required": ["type", "rich_text", "object", "id"]
			},
			"rollupDatabasePropertyConfigResponse": {
				"type": "object",
				"properties": {
					"type": {
						"type": "string",
						"const": "rollup",
						"description": "Always `rollup`"
					},
					"rollup": {
						"type": "object",
						"properties": {
							"function": {
								"$ref": "#/components/schemas/rollupFunction",
								"description": "The function to use for the rollup, e.g. count, count_values, percent_not_empty, max."
							},
							"rollup_property_name": {
								"type": "string"
							},
							"relation_property_name": {
								"type": "string"
							},
							"rollup_property_id": {
								"type": "string"
							},
							"relation_property_id": {
								"type": "string"
							}
						},
						"additionalProperties": false,
						"required": [
							"function",
							"rollup_property_name",
							"relation_property_name",
							"rollup_property_id",
							"relation_property_id"
						]
					}
				},
				"required": ["type", "rollup"],
				"title": "Rollup"
			},
			"rollupFunction": {
				"type": "string",
				"enum": [
					"count",
					"count_values",
					"empty",
					"not_empty",
					"unique",
					"show_unique",
					"percent_empty",
					"percent_not_empty",
					"sum",
					"average",
					"median",
					"min",
					"max",
					"range",
					"earliest_date",
					"latest_date",
					"date_range",
					"checked",
					"unchecked",
					"percent_checked",
					"percent_unchecked",
					"count_per_group",
					"percent_per_group",
					"show_original"
				]
			},
			"rollupPropertyItemObjectResponse": {
				"title": "Rollup",
				"type": "object",
				"properties": {
					"type": {
						"type": "string",
						"const": "rollup"
					},
					"rollup": {
						"anyOf": [
							{
								"title": "Number",
								"type": "object",
								"properties": {
									"type": {
										"type": "string",
										"const": "number"
									},
									"number": {
										"type": ["number", "null"]
									},
									"function": {
										"$ref": "#/components/schemas/rollupFunction"
									}
								},
								"required": ["type", "number", "function"]
							},
							{
								"title": "Date",
								"type": "object",
								"properties": {
									"type": {
										"type": "string",
										"const": "date"
									},
									"date": {
										"anyOf": [
											{
												"$ref": "#/components/schemas/dateResponse"
											},
											{
												"type": "null"
											}
										]
									},
									"function": {
										"$ref": "#/components/schemas/rollupFunction"
									}
								},
								"required": ["type", "date", "function"]
							},
							{
								"title": "Array",
								"type": "object",
								"properties": {
									"type": {
										"type": "string",
										"const": "array"
									},
									"array": {
										"type": "array",
										"items": {
											"$ref": "#/components/schemas/emptyObject"
										},
										"maxItems": 100
									},
									"function": {
										"$ref": "#/components/schemas/rollupFunction"
									}
								},
								"required": ["type", "array", "function"]
							},
							{
								"title": "Unsupported",
								"type": "object",
								"properties": {
									"type": {
										"type": "string",
										"const": "unsupported"
									},
									"unsupported": {
										"$ref": "#/components/schemas/emptyObject"
									},
									"function": {
										"$ref": "#/components/schemas/rollupFunction"
									}
								},
								"required": ["type", "unsupported", "function"]
							},
							{
								"title": "Incomplete",
								"type": "object",
								"properties": {
									"type": {
										"type": "string",
										"const": "incomplete"
									},
									"incomplete": {
										"$ref": "#/components/schemas/emptyObject"
									},
									"function": {
										"$ref": "#/components/schemas/rollupFunction"
									}
								},
								"required": ["type", "incomplete", "function"]
							}
						]
					},
					"object": {
						"type": "string",
						"const": "property_item"
					},
					"id": {
						"type": "string"
					}
				},
				"required": ["type", "rollup", "object", "id"]
			},
			"runToolResponse": {
				"oneOf": [
					{
						"type": "object",
						"properties": {
							"pages": {
								"type": "array",
								"items": {
									"type": "object",
									"properties": {
										"id": {
											"type": "string"
										},
										"url": {
											"type": "string"
										},
										"properties": {
											"type": "object",
											"additionalProperties": {
												"oneOf": [
													{
														"type": "string"
													},
													{
														"type": "number"
													},
													{
														"type": "boolean"
													},
													{
														"type": "array",
														"items": {
															"type": "string"
														},
														"maxItems": 100
													},
													{
														"type": "null"
													}
												]
											}
										}
									},
									"additionalProperties": false,
									"required": ["id", "url", "properties"]
								},
								"maxItems": 100
							},
							"warnings": {
								"type": "array",
								"items": {
									"type": "object",
									"properties": {
										"index": {
											"type": "integer",
											"minimum": 0,
											"description": "Index of the page in the request's pages array."
										},
										"code": {
											"type": "string"
										},
										"message": {
											"type": "string"
										},
										"category": {
											"type": "string",
											"description": "Markdown parser warning category, such as unsupported_tag. Set only for markdown_parser_warning."
										},
										"autofix": {
											"type": "boolean",
											"description": "True when the parser changed the content to apply it. Set only for markdown_parser_warning."
										}
									},
									"additionalProperties": false,
									"required": ["index", "code", "message"]
								},
								"maxItems": 100,
								"description": "Parts of the input that were changed before writing, such as a property key. Omitted when there are none."
							},
							"mcp_notice": {
								"type": "object",
								"properties": {
									"type": {
										"type": "string",
										"const": "block_limit_grace",
										"description": "Always `block_limit_grace`"
									},
									"message": {
										"type": "string"
									},
									"grace_period_ends_at": {
										"type": "string"
									},
									"recovery": {
										"type": "object",
										"properties": {
											"type": {
												"type": "string",
												"const": "upgrade",
												"description": "Always `upgrade`"
											},
											"label": {
												"type": "string",
												"const": "Upgrade plan",
												"description": "Always `Upgrade plan`"
											},
											"url": {
												"type": "string"
											}
										},
										"additionalProperties": false,
										"required": ["type", "label", "url"]
									}
								},
								"additionalProperties": false,
								"required": ["type", "message", "grace_period_ends_at"]
							}
						},
						"additionalProperties": false,
						"required": ["pages"]
					},
					{
						"type": "object",
						"properties": {
							"page_id": {
								"$ref": "#/components/schemas/idResponse"
							},
							"warnings": {
								"type": "array",
								"items": {
									"type": "object",
									"properties": {
										"code": {
											"type": "string"
										},
										"message": {
											"type": "string"
										},
										"category": {
											"type": "string",
											"description": "Markdown parser warning category, such as unsupported_tag. Set only for markdown_parser_warning."
										},
										"autofix": {
											"type": "boolean",
											"description": "True when the parser changed the content to apply it. Set only for markdown_parser_warning."
										}
									},
									"additionalProperties": false,
									"required": ["code", "message"]
								},
								"maxItems": 100,
								"description": "Parts of the update that were skipped or changed, such as dropped lines or auto-corrected text. Omitted when there are none."
							},
							"revision": {
								"type": "object",
								"properties": {
									"id": {
										"type": "string",
										"description": "The revision ID."
									},
									"url": {
										"type": "string",
										"description": "Where the user reviews the changes in this revision."
									},
									"instruction": {
										"type": "string",
										"description": "What to do next and what to tell the user."
									}
								},
								"additionalProperties": false,
								"required": ["id", "url", "instruction"],
								"description": "The revision this edit was saved in, where the user can review it. Omitted when the edit was not tracked in a revision."
							},
							"mcp_notice": {
								"type": "object",
								"properties": {
									"type": {
										"type": "string",
										"const": "block_limit_grace",
										"description": "Always `block_limit_grace`"
									},
									"message": {
										"type": "string"
									},
									"grace_period_ends_at": {
										"type": "string"
									},
									"recovery": {
										"type": "object",
										"properties": {
											"type": {
												"type": "string",
												"const": "upgrade",
												"description": "Always `upgrade`"
											},
											"label": {
												"type": "string",
												"const": "Upgrade plan",
												"description": "Always `Upgrade plan`"
											},
											"url": {
												"type": "string"
											}
										},
										"additionalProperties": false,
										"required": ["type", "label", "url"]
									}
								},
								"additionalProperties": false,
								"required": ["type", "message", "grace_period_ends_at"]
							}
						},
						"additionalProperties": false,
						"required": ["page_id"]
					},
					{
						"type": "object",
						"properties": {
							"page_id": {
								"type": "string",
								"description": "The ID of the page that was marked as a skill."
							}
						},
						"required": ["page_id"]
					},
					{
						"type": "object",
						"properties": {
							"status": {
								"type": "string",
								"const": "pending",
								"description": "Ready for upload."
							},
							"upload_token": {
								"type": "string",
								"description": "Pass to complete after uploading."
							},
							"upload_url": {
								"type": "string",
								"description": "Signed S3 URL; PUT raw tar.gz bytes here."
							},
							"upload_method": {
								"type": "string",
								"const": "PUT",
								"description": "HTTP method."
							},
							"upload_headers": {
								"type": "array",
								"items": {
									"type": "object",
									"properties": {
										"name": {
											"type": "string",
											"description": "Header name."
										},
										"value": {
											"type": "string",
											"description": "Header value."
										}
									},
									"additionalProperties": false,
									"required": ["name", "value"]
								},
								"description": "Send every returned header exactly."
							},
							"expires_at": {
								"type": "string",
								"description": "ISO-8601 expiry."
							}
						},
						"additionalProperties": false,
						"required": [
							"status",
							"upload_token",
							"upload_url",
							"upload_method",
							"upload_headers",
							"expires_at"
						]
					},
					{
						"type": "object",
						"properties": {
							"status": {
								"type": "string",
								"const": "completed",
								"description": "Import committed."
							},
							"page_id": {
								"type": "string",
								"format": "uuid",
								"description": "Updated skill page."
							},
							"version_id": {
								"type": "string",
								"description": "Content version of the uploaded skill. Matches `version_id` from GET /v1/ai/skills/{id} until the skill changes."
							}
						},
						"additionalProperties": false,
						"required": ["status", "page_id", "version_id"]
					},
					{
						"type": "object",
						"required": ["skill_url", "settings"],
						"additionalProperties": false,
						"properties": {
							"skill_url": {
								"type": "string"
							},
							"settings": {
								"type": "object",
								"additionalProperties": false,
								"required": [
									"enabled",
									"use_automatically",
									"use_in_connected_agents",
									"show_in_chat",
									"show_in_editor",
									"show_during_meetings",
									"show_after_meetings"
								],
								"properties": {
									"enabled": {
										"type": "boolean",
										"description": "Enable or disable this Skill in Notion Agent. Disabling also clears placements and connected-agent use."
									},
									"use_automatically": {
										"type": "boolean",
										"description": "Allow agents to use this enabled Skill automatically when relevant. Set false to require explicit invocation without disabling the Skill or changing its placements."
									},
									"use_in_connected_agents": {
										"type": "boolean",
										"description": "Make this Skill available to agents connected over MCP, independently of its Notion Agent installation. Requires a non-empty Skill description."
									},
									"show_in_chat": {
										"type": "boolean",
										"description": "Show this enabled Skill in the Agent chat menu."
									},
									"show_in_editor": {
										"type": "boolean",
										"description": "Show this enabled Skill in the text selection menu."
									},
									"show_during_meetings": {
										"type": "boolean",
										"description": "Show this enabled Skill during AI meeting notes."
									},
									"show_after_meetings": {
										"type": "boolean",
										"description": "Show this enabled Skill after AI meeting notes."
									}
								}
							}
						}
					},
					{
						"type": "object",
						"required": ["surfaceResults"],
						"additionalProperties": false,
						"properties": {
							"surfaceResults": {
								"type": "object",
								"additionalProperties": false,
								"properties": {
									"mcp": {
										"type": "object",
										"required": [
											"addedSkillUrls",
											"removedSkillUrls",
											"enabledSkillUrls"
										],
										"additionalProperties": false,
										"properties": {
											"addedSkillUrls": {
												"type": "array",
												"items": {
													"type": "string"
												},
												"description": "Skill URLs newly enabled on this surface."
											},
											"removedSkillUrls": {
												"type": "array",
												"items": {
													"type": "string"
												},
												"description": "Skill URLs disabled on this surface."
											},
											"enabledSkillUrls": {
												"type": "array",
												"items": {
													"type": "string"
												},
												"description": "All Skill URLs enabled on this surface."
											}
										}
									},
									"notion_ai": {
										"type": "object",
										"required": [
											"addedSkillUrls",
											"removedSkillUrls",
											"enabledSkillUrls"
										],
										"additionalProperties": false,
										"properties": {
											"addedSkillUrls": {
												"type": "array",
												"items": {
													"type": "string"
												},
												"description": "Skill URLs newly enabled on this surface."
											},
											"removedSkillUrls": {
												"type": "array",
												"items": {
													"type": "string"
												},
												"description": "Skill URLs disabled on this surface."
											},
											"enabledSkillUrls": {
												"type": "array",
												"items": {
													"type": "string"
												},
												"description": "All Skill URLs enabled on this surface."
											}
										}
									}
								},
								"description": "Changes and final enabled Skill URLs for each requested surface."
							}
						}
					},
					{
						"type": "object",
						"properties": {
							"url": {
								"type": "string"
							},
							"items": {
								"type": "array",
								"items": {
									"oneOf": [
										{
											"type": "object",
											"properties": {
												"type": {
													"type": "string",
													"const": "user",
													"description": "Always `user`"
												},
												"userUrl": {
													"type": "string"
												},
												"accessLevel": {
													"type": "string",
													"enum": [
														"full_access",
														"can_edit",
														"can_edit_content",
														"can_comment",
														"can_view",
														"no_access"
													],
													"description": "One of: `full_access`, `can_edit`, `can_edit_content`, `can_comment`, `can_view`, `no_access`"
												}
											},
											"additionalProperties": false,
											"required": ["type", "userUrl", "accessLevel"]
										},
										{
											"type": "object",
											"properties": {
												"type": {
													"type": "string",
													"const": "public",
													"description": "Always `public`"
												},
												"accessLevel": {
													"type": "string",
													"enum": [
														"full_access",
														"can_edit",
														"can_edit_content",
														"can_comment",
														"can_view",
														"no_access"
													],
													"description": "One of: `full_access`, `can_edit`, `can_edit_content`, `can_comment`, `can_view`, `no_access`"
												},
												"publicOptions": {
													"type": "object",
													"properties": {
														"allowDuplicate": {
															"type": "boolean"
														},
														"allowSearchEngineIndexing": {
															"type": "boolean"
														},
														"expirationTimestamp": {
															"type": "number"
														},
														"isPublicShareLink": {
															"type": "boolean"
														},
														"isSite": {
															"type": "boolean"
														}
													},
													"additionalProperties": false
												}
											},
											"additionalProperties": false,
											"required": ["type", "accessLevel"]
										},
										{
											"type": "object",
											"properties": {
												"type": {
													"type": "string",
													"const": "workspace",
													"description": "Always `workspace`"
												},
												"accessLevel": {
													"type": "string",
													"enum": [
														"full_access",
														"can_edit",
														"can_edit_content",
														"can_comment",
														"can_view",
														"no_access"
													],
													"description": "One of: `full_access`, `can_edit`, `can_edit_content`, `can_comment`, `can_view`, `no_access`"
												}
											},
											"additionalProperties": false,
											"required": ["type", "accessLevel"]
										}
									]
								}
							}
						},
						"additionalProperties": false,
						"required": ["url", "items"]
					},
					{
						"type": "object",
						"properties": {
							"url": {
								"type": "string",
								"description": "The Notion page or database URL whose sharing permission will change."
							},
							"item": {
								"oneOf": [
									{
										"type": "object",
										"properties": {
											"type": {
												"type": "string",
												"const": "user",
												"description": "Always `user`"
											},
											"userUrl": {
												"type": "string",
												"description": "The recipient’s Notion user URL, in user:// format."
											},
											"accessLevel": {
												"type": "string",
												"enum": [
													"full_access",
													"can_edit",
													"can_edit_content",
													"can_comment",
													"can_view",
													"no_access"
												],
												"description": "One of: `full_access`, `can_edit`, `can_edit_content`, `can_comment`, `can_view`, `no_access`"
											}
										},
										"additionalProperties": false,
										"required": ["type", "userUrl", "accessLevel"]
									},
									{
										"type": "object",
										"properties": {
											"type": {
												"type": "string",
												"const": "public",
												"description": "Always `public`"
											},
											"accessLevel": {
												"type": "string",
												"enum": [
													"full_access",
													"can_edit",
													"can_edit_content",
													"can_comment",
													"can_view",
													"no_access"
												],
												"description": "One of: `full_access`, `can_edit`, `can_edit_content`, `can_comment`, `can_view`, `no_access`"
											},
											"publicOptions": {
												"type": "object",
												"properties": {
													"allowDuplicate": {
														"type": "boolean",
														"description": "Allow visitors with public access to duplicate the page."
													},
													"allowSearchEngineIndexing": {
														"type": "boolean",
														"description": "Allow search engines to index the published page."
													},
													"expirationTimestamp": {
														"type": "number",
														"description": "Expiration time for this public permission as a Unix timestamp in milliseconds."
													},
													"clearExpiration": {
														"type": "boolean",
														"description": "Remove the public permission expiration. Cannot be combined with expirationTimestamp."
													},
													"isPublicShareLink": {
														"type": "boolean",
														"description": "Enable public-link access. A public grant requires this or isSite to be true."
													},
													"isSite": {
														"type": "boolean",
														"description": "Publish as a Notion Site. A public grant requires this or isPublicShareLink to be true."
													}
												},
												"additionalProperties": false,
												"description": "Public-link or Notion Site options. Omitted fields preserve existing settings, including expiration. New grants disable duplication and search indexing unless explicitly enabled. Omit when removing access."
											}
										},
										"additionalProperties": false,
										"required": ["type", "accessLevel"]
									},
									{
										"type": "object",
										"properties": {
											"type": {
												"type": "string",
												"const": "workspace",
												"description": "Always `workspace`"
											},
											"accessLevel": {
												"type": "string",
												"enum": [
													"full_access",
													"can_edit",
													"can_edit_content",
													"can_comment",
													"can_view",
													"no_access"
												],
												"description": "One of: `full_access`, `can_edit`, `can_edit_content`, `can_comment`, `can_view`, `no_access`"
											}
										},
										"additionalProperties": false,
										"required": ["type", "accessLevel"]
									}
								],
								"description": "One explicit user, workspace, or public permission to set or remove. Use no_access to remove the grant."
							}
						},
						"additionalProperties": false,
						"required": ["url", "item"]
					},
					{
						"type": "object",
						"required": ["config", "shortcutCatalog", "sectionCatalog"],
						"additionalProperties": false,
						"properties": {
							"config": {
								"type": "object",
								"required": ["version", "tabs"],
								"additionalProperties": false,
								"properties": {
									"version": {
										"type": "integer",
										"enum": [1]
									},
									"tabs": {
										"type": "array",
										"minItems": 1,
										"items": {
											"type": "object",
											"required": [
												"id",
												"name",
												"icon",
												"shortcuts",
												"sections"
											],
											"additionalProperties": false,
											"properties": {
												"id": {
													"type": "string"
												},
												"name": {
													"type": "string"
												},
												"icon": {
													"type": "string"
												},
												"shortcuts": {
													"type": "array",
													"items": {
														"oneOf": [
															{
																"type": "string",
																"enum": [
																	"agent_companion",
																	"new_page",
																	"new_chat",
																	"new_meeting_note",
																	"new_database",
																	"new_agent",
																	"library",
																	"calendar",
																	"agents",
																	"skills",
																	"meeting_notes",
																	"tasks",
																	"marketplace"
																]
															},
															{
																"type": "object",
																"required": ["type", "id"],
																"additionalProperties": false,
																"properties": {
																	"type": {
																		"type": "string",
																		"enum": ["new_page"],
																		"description": "The new page item type."
																	},
																	"id": {
																		"type": "string",
																		"description": "Occurrence id from get_sidebar_tabs. Omit for a new shortcut."
																	},
																	"dataSourceUrl": {
																		"type": "string",
																		"description": "The collection:// URL of the destination data source. Use at most one of dataSourceUrl and pageUrl."
																	},
																	"pageUrl": {
																		"type": "string",
																		"description": "The Notion URL of a page to create subpages in. Use at most one of dataSourceUrl and pageUrl."
																	},
																	"viewId": {
																		"type": "string",
																		"format": "uuid",
																		"description": "An optional database view id in dataSourceUrl. New pages are created in that view."
																	},
																	"templateUrl": {
																		"type": "string",
																		"description": "An optional database template page URL that belongs to dataSourceUrl, or \"empty\" to create blank pages without the default template."
																	},
																	"label": {
																		"type": "string",
																		"description": "An optional custom label, limited to 150 characters. Prefer \"New {singular noun}\" when the database's created object is clear, for example \"New task\" for Tasks. Otherwise omit it to use the product default."
																	},
																	"icon": {
																		"type": "string",
																		"maxLength": 2000,
																		"description": "An optional custom icon override using tool-docs://notion/pages/notion-icons.md or a single emoji. Omit it to use the database icon, or the generic compose icon when the shortcut has no database. Set it only when the user requests an override or there is a clear semantic reason."
																	},
																	"openIn": {
																		"type": "string",
																		"enum": [
																			"side_peek",
																			"center_peek",
																			"full_page"
																		],
																		"description": "How pages opened from this item appear. Omit it to use the product default."
																	}
																}
															},
															{
																"type": "object",
																"required": ["type", "id", "pageUrl"],
																"additionalProperties": false,
																"properties": {
																	"type": {
																		"type": "string",
																		"enum": ["page_link"],
																		"description": "The page link item type."
																	},
																	"id": {
																		"type": "string",
																		"description": "Occurrence id from get_sidebar_tabs. Omit for a new shortcut."
																	},
																	"pageUrl": {
																		"type": "string",
																		"description": "The Notion URL of the page or database the shortcut navigates to. The shortcut always shows that target's own title and icon."
																	},
																	"viewId": {
																		"type": "string",
																		"format": "uuid",
																		"description": "An optional database view id. It must identify a view parented by the database in pageUrl. Omit it to open the user's most recently visited view."
																	},
																	"openIn": {
																		"type": "string",
																		"enum": [
																			"side_peek",
																			"center_peek",
																			"full_page"
																		],
																		"description": "How pages opened from this item appear. Omit it to use the product default."
																	}
																}
															},
															{
																"type": "object",
																"required": ["type", "id", "workflowId"],
																"additionalProperties": false,
																"properties": {
																	"type": {
																		"type": "string",
																		"enum": ["agent"],
																		"description": "The agent item type."
																	},
																	"id": {
																		"type": "string",
																		"description": "Occurrence id from get_sidebar_tabs. Omit for a new shortcut."
																	},
																	"workflowId": {
																		"type": "string",
																		"format": "uuid",
																		"description": "The id of the custom agent the shortcut navigates to."
																	}
																}
															},
															{
																"type": "object",
																"required": ["type", "id", "threadId"],
																"additionalProperties": false,
																"properties": {
																	"type": {
																		"type": "string",
																		"enum": ["chat_thread"],
																		"description": "The chat thread item type."
																	},
																	"id": {
																		"type": "string",
																		"description": "Occurrence id from get_sidebar_tabs. Omit for a new shortcut."
																	},
																	"threadId": {
																		"type": "string",
																		"format": "uuid",
																		"description": "The id of the AI chat thread the shortcut opens."
																	}
																}
															},
															{
																"type": "object",
																"required": ["type", "id"],
																"additionalProperties": false,
																"properties": {
																	"type": {
																		"type": "string",
																		"enum": ["chat_dashboard"],
																		"description": "The chat dashboard item type."
																	},
																	"id": {
																		"type": "string",
																		"description": "Occurrence id from get_sidebar_tabs. Omit for a new shortcut."
																	}
																}
															},
															{
																"type": "object",
																"required": ["type", "id"],
																"additionalProperties": false,
																"properties": {
																	"type": {
																		"type": "string",
																		"enum": ["settings"],
																		"description": "The settings item type."
																	},
																	"id": {
																		"type": "string",
																		"description": "Occurrence id from get_sidebar_tabs. Omit for a new shortcut."
																	},
																	"panel": {
																		"type": "string",
																		"enum": [
																			"profile",
																			"user_settings",
																			"notifications",
																			"mail_and_calendar",
																			"offline",
																			"settings",
																			"members",
																			"plans",
																			"billing",
																			"ai_usage_dashboard",
																			"subscription",
																			"security",
																			"identity_provisioning",
																			"admin_content_search",
																			"integrations",
																			"integrations_mcp",
																			"credentials",
																			"imports",
																			"teams",
																			"audit_log",
																			"analytics",
																			"public_pages",
																			"custom_emoji",
																			"verified_pages",
																			"requests",
																			"ai",
																			"meeting_notes",
																			"workers",
																			"developer",
																			"experiments",
																			"performance_toolbar",
																			"client_preview",
																			"personalization",
																			"user_similarity_scores",
																			"collection_debug",
																			"offline_mode_debug",
																			"design_previews",
																			"mobile_native"
																		],
																		"description": "An optional settings panel id. Omit it to open Settings without selecting a specific panel."
																	}
																}
															}
														]
													}
												},
												"sections": {
													"type": "array",
													"items": {
														"oneOf": [
															{
																"type": "string",
																"enum": [
																	"favorites",
																	"teamspaces",
																	"shared",
																	"private",
																	"workspace",
																	"agents",
																	"chats",
																	"notion_apps",
																	"meetings_today",
																	"recents",
																	"myMeetings",
																	"developer",
																	"pinned_chats",
																	"unread_chats"
																]
															},
															{
																"type": "object",
																"required": ["type", "itemLimit"],
																"additionalProperties": false,
																"properties": {
																	"type": {
																		"type": "string",
																		"enum": [
																			"favorites",
																			"teamspaces",
																			"shared",
																			"private",
																			"workspace",
																			"agents",
																			"chats",
																			"notion_apps",
																			"meetings_today",
																			"recents",
																			"myMeetings",
																			"developer",
																			"pinned_chats",
																			"unread_chats"
																		],
																		"description": "The built-in section id."
																	},
																	"itemLimit": {
																		"type": "integer",
																		"minimum": 1,
																		"maximum": 100,
																		"description": "Maximum visible items for this tab's occurrence of the section. Use the string form instead to use the workspace default."
																	}
																}
															},
															{
																"type": "object",
																"required": [
																	"type",
																	"id",
																	"viewUrl",
																	"itemLimit"
																],
																"additionalProperties": false,
																"properties": {
																	"type": {
																		"type": "string",
																		"enum": ["database_view"],
																		"description": "The database view section type."
																	},
																	"id": {
																		"type": "string",
																		"description": "Stable occurrence id returned by get_sidebar_tabs. Omit only when adding a new database view section."
																	},
																	"viewUrl": {
																		"type": "string",
																		"description": "An explicit view:// URL or Notion URL containing a v= view id. A database page URL without a view id is ambiguous and invalid."
																	},
																	"templateUrl": {
																		"type": "string",
																		"description": "An optional template page URL in the view's data source used by the section's New button, or \"empty\" to create blank pages without the default template."
																	},
																	"itemLimit": {
																		"type": "integer",
																		"minimum": 1,
																		"maximum": 100,
																		"description": "Maximum visible rows. Defaults to 5 when omitted."
																	},
																	"hidePageIcon": {
																		"type": "boolean",
																		"description": "Whether to hide page icons for rows in this section. Defaults to false."
																	},
																	"customName": {
																		"type": "string",
																		"maxLength": 150,
																		"description": "An optional sidebar-only name that replaces the underlying view name in this section's label. Omit it to use the view name."
																	},
																	"openIn": {
																		"type": "string",
																		"enum": [
																			"side_peek",
																			"center_peek",
																			"full_page"
																		],
																		"description": "How pages opened from this section appear. Omit it to use the database view's setting."
																	}
																}
															},
															{
																"type": "object",
																"required": ["type", "teamspaceUrl"],
																"additionalProperties": false,
																"properties": {
																	"type": {
																		"type": "string",
																		"enum": ["teamspace"],
																		"description": "The teamspace item type."
																	},
																	"teamspaceUrl": {
																		"type": "string",
																		"description": "The teamspace:// URL of a teamspace the current user has joined."
																	}
																}
															},
															{
																"type": "string",
																"enum": ["meeting_databases"]
															}
														]
													}
												}
											}
										}
									}
								}
							},
							"shortcutCatalog": {
								"type": "array",
								"items": {
									"type": "object",
									"required": ["id", "description", "examples"],
									"additionalProperties": false,
									"properties": {
										"id": {
											"type": "string",
											"enum": [
												"agent_companion",
												"new_page",
												"new_chat",
												"new_meeting_note",
												"new_database",
												"new_agent",
												"library",
												"calendar",
												"agents",
												"skills",
												"meeting_notes",
												"tasks",
												"marketplace",
												"agent",
												"chat_thread",
												"chat_dashboard",
												"page_link",
												"settings"
											]
										},
										"description": {
											"type": "string"
										},
										"examples": {
											"type": "array",
											"minItems": 1,
											"items": {
												"oneOf": [
													{
														"type": "string",
														"enum": [
															"agent_companion",
															"new_page",
															"new_chat",
															"new_meeting_note",
															"new_database",
															"new_agent",
															"library",
															"calendar",
															"agents",
															"skills",
															"meeting_notes",
															"tasks",
															"marketplace"
														]
													},
													{
														"type": "object",
														"required": ["type"],
														"additionalProperties": false,
														"properties": {
															"type": {
																"type": "string",
																"enum": ["new_page"],
																"description": "The new page item type."
															},
															"id": {
																"type": "string",
																"description": "Occurrence id from get_sidebar_tabs. Omit for a new shortcut."
															},
															"dataSourceUrl": {
																"type": "string",
																"description": "The collection:// URL of the destination data source. Use at most one of dataSourceUrl and pageUrl."
															},
															"pageUrl": {
																"type": "string",
																"description": "The Notion URL of a page to create subpages in. Use at most one of dataSourceUrl and pageUrl."
															},
															"viewId": {
																"type": "string",
																"format": "uuid",
																"description": "An optional database view id in dataSourceUrl. New pages are created in that view."
															},
															"templateUrl": {
																"type": "string",
																"description": "An optional database template page URL that belongs to dataSourceUrl, or \"empty\" to create blank pages without the default template."
															},
															"label": {
																"type": "string",
																"description": "An optional custom label, limited to 150 characters. Prefer \"New {singular noun}\" when the database's created object is clear, for example \"New task\" for Tasks. Otherwise omit it to use the product default."
															},
															"icon": {
																"type": "string",
																"maxLength": 2000,
																"description": "An optional custom icon override using tool-docs://notion/pages/notion-icons.md or a single emoji. Omit it to use the database icon, or the generic compose icon when the shortcut has no database. Set it only when the user requests an override or there is a clear semantic reason."
															},
															"openIn": {
																"type": "string",
																"enum": [
																	"side_peek",
																	"center_peek",
																	"full_page"
																],
																"description": "How pages opened from this item appear. Omit it to use the product default."
															}
														}
													},
													{
														"type": "object",
														"required": ["type", "pageUrl"],
														"additionalProperties": false,
														"properties": {
															"type": {
																"type": "string",
																"enum": ["page_link"],
																"description": "The page link item type."
															},
															"id": {
																"type": "string",
																"description": "Occurrence id from get_sidebar_tabs. Omit for a new shortcut."
															},
															"pageUrl": {
																"type": "string",
																"description": "The Notion URL of the page or database the shortcut navigates to. The shortcut always shows that target's own title and icon."
															},
															"viewId": {
																"type": "string",
																"format": "uuid",
																"description": "An optional database view id. It must identify a view parented by the database in pageUrl. Omit it to open the user's most recently visited view."
															},
															"openIn": {
																"type": "string",
																"enum": [
																	"side_peek",
																	"center_peek",
																	"full_page"
																],
																"description": "How pages opened from this item appear. Omit it to use the product default."
															}
														}
													},
													{
														"type": "object",
														"required": ["type", "workflowId"],
														"additionalProperties": false,
														"properties": {
															"type": {
																"type": "string",
																"enum": ["agent"],
																"description": "The agent item type."
															},
															"id": {
																"type": "string",
																"description": "Occurrence id from get_sidebar_tabs. Omit for a new shortcut."
															},
															"workflowId": {
																"type": "string",
																"format": "uuid",
																"description": "The id of the custom agent the shortcut navigates to."
															}
														}
													},
													{
														"type": "object",
														"required": ["type", "threadId"],
														"additionalProperties": false,
														"properties": {
															"type": {
																"type": "string",
																"enum": ["chat_thread"],
																"description": "The chat thread item type."
															},
															"id": {
																"type": "string",
																"description": "Occurrence id from get_sidebar_tabs. Omit for a new shortcut."
															},
															"threadId": {
																"type": "string",
																"format": "uuid",
																"description": "The id of the AI chat thread the shortcut opens."
															}
														}
													},
													{
														"type": "object",
														"required": ["type"],
														"additionalProperties": false,
														"properties": {
															"type": {
																"type": "string",
																"enum": ["chat_dashboard"],
																"description": "The chat dashboard item type."
															},
															"id": {
																"type": "string",
																"description": "Occurrence id from get_sidebar_tabs. Omit for a new shortcut."
															}
														}
													},
													{
														"type": "object",
														"required": ["type"],
														"additionalProperties": false,
														"properties": {
															"type": {
																"type": "string",
																"enum": ["settings"],
																"description": "The settings item type."
															},
															"id": {
																"type": "string",
																"description": "Occurrence id from get_sidebar_tabs. Omit for a new shortcut."
															},
															"panel": {
																"type": "string",
																"enum": [
																	"profile",
																	"user_settings",
																	"notifications",
																	"mail_and_calendar",
																	"offline",
																	"settings",
																	"members",
																	"plans",
																	"billing",
																	"ai_usage_dashboard",
																	"subscription",
																	"security",
																	"identity_provisioning",
																	"admin_content_search",
																	"integrations",
																	"integrations_mcp",
																	"credentials",
																	"imports",
																	"teams",
																	"audit_log",
																	"analytics",
																	"public_pages",
																	"custom_emoji",
																	"verified_pages",
																	"requests",
																	"ai",
																	"meeting_notes",
																	"workers",
																	"developer",
																	"experiments",
																	"performance_toolbar",
																	"client_preview",
																	"personalization",
																	"user_similarity_scores",
																	"collection_debug",
																	"offline_mode_debug",
																	"design_previews",
																	"mobile_native"
																],
																"description": "An optional settings panel id. Omit it to open Settings without selecting a specific panel."
															}
														}
													}
												]
											}
										}
									}
								}
							},
							"sectionCatalog": {
								"type": "array",
								"items": {
									"type": "object",
									"required": ["id", "description", "examples"],
									"additionalProperties": false,
									"properties": {
										"id": {
											"type": "string",
											"enum": [
												"favorites",
												"teamspaces",
												"shared",
												"private",
												"workspace",
												"agents",
												"chats",
												"notion_apps",
												"meetings_today",
												"recents",
												"myMeetings",
												"developer",
												"pinned_chats",
												"unread_chats",
												"database_view",
												"teamspace",
												"meeting_databases"
											]
										},
										"description": {
											"type": "string"
										},
										"examples": {
											"type": "array",
											"minItems": 1,
											"items": {
												"oneOf": [
													{
														"type": "string",
														"enum": [
															"favorites",
															"teamspaces",
															"shared",
															"private",
															"workspace",
															"agents",
															"chats",
															"notion_apps",
															"meetings_today",
															"recents",
															"myMeetings",
															"developer",
															"pinned_chats",
															"unread_chats"
														]
													},
													{
														"type": "object",
														"required": ["type"],
														"additionalProperties": false,
														"properties": {
															"type": {
																"type": "string",
																"enum": [
																	"favorites",
																	"teamspaces",
																	"shared",
																	"private",
																	"workspace",
																	"agents",
																	"chats",
																	"notion_apps",
																	"meetings_today",
																	"recents",
																	"myMeetings",
																	"developer",
																	"pinned_chats",
																	"unread_chats"
																],
																"description": "The built-in section id."
															},
															"itemLimit": {
																"type": "integer",
																"minimum": 1,
																"maximum": 100,
																"description": "Maximum visible items for this tab's occurrence of the section. Use the string form instead to use the workspace default."
															}
														}
													},
													{
														"type": "object",
														"required": ["type", "viewUrl"],
														"additionalProperties": false,
														"properties": {
															"type": {
																"type": "string",
																"enum": ["database_view"],
																"description": "The database view section type."
															},
															"id": {
																"type": "string",
																"description": "Stable occurrence id returned by get_sidebar_tabs. Omit only when adding a new database view section."
															},
															"viewUrl": {
																"type": "string",
																"description": "An explicit view:// URL or Notion URL containing a v= view id. A database page URL without a view id is ambiguous and invalid."
															},
															"templateUrl": {
																"type": "string",
																"description": "An optional template page URL in the view's data source used by the section's New button, or \"empty\" to create blank pages without the default template."
															},
															"itemLimit": {
																"type": "integer",
																"minimum": 1,
																"maximum": 100,
																"description": "Maximum visible rows. Defaults to 5 when omitted."
															},
															"hidePageIcon": {
																"type": "boolean",
																"description": "Whether to hide page icons for rows in this section. Defaults to false."
															},
															"customName": {
																"type": "string",
																"maxLength": 150,
																"description": "An optional sidebar-only name that replaces the underlying view name in this section's label. Omit it to use the view name."
															},
															"openIn": {
																"type": "string",
																"enum": [
																	"side_peek",
																	"center_peek",
																	"full_page"
																],
																"description": "How pages opened from this section appear. Omit it to use the database view's setting."
															}
														}
													},
													{
														"type": "object",
														"required": ["type", "teamspaceUrl"],
														"additionalProperties": false,
														"properties": {
															"type": {
																"type": "string",
																"enum": ["teamspace"],
																"description": "The teamspace item type."
															},
															"teamspaceUrl": {
																"type": "string",
																"description": "The teamspace:// URL or id of a teamspace the current user has joined."
															}
														}
													},
													{
														"type": "string",
														"enum": ["meeting_databases"]
													}
												]
											}
										}
									}
								}
							}
						}
					},
					{
						"type": "object",
						"required": ["config", "shortcutCatalog", "sectionCatalog"],
						"additionalProperties": false,
						"properties": {
							"config": {
								"type": "object",
								"required": ["version", "tabs"],
								"additionalProperties": false,
								"properties": {
									"version": {
										"type": "integer",
										"enum": [1]
									},
									"tabs": {
										"type": "array",
										"minItems": 1,
										"items": {
											"type": "object",
											"required": [
												"id",
												"name",
												"icon",
												"shortcuts",
												"sections"
											],
											"additionalProperties": false,
											"properties": {
												"id": {
													"type": "string"
												},
												"name": {
													"type": "string"
												},
												"icon": {
													"type": "string"
												},
												"shortcuts": {
													"type": "array",
													"items": {
														"oneOf": [
															{
																"type": "string",
																"enum": [
																	"agent_companion",
																	"new_page",
																	"new_chat",
																	"new_meeting_note",
																	"new_database",
																	"new_agent",
																	"library",
																	"calendar",
																	"agents",
																	"skills",
																	"meeting_notes",
																	"tasks",
																	"marketplace"
																]
															},
															{
																"type": "object",
																"required": ["type", "id"],
																"additionalProperties": false,
																"properties": {
																	"type": {
																		"type": "string",
																		"enum": ["new_page"],
																		"description": "The new page item type."
																	},
																	"id": {
																		"type": "string",
																		"description": "Occurrence id from get_sidebar_tabs. Omit for a new shortcut."
																	},
																	"dataSourceUrl": {
																		"type": "string",
																		"description": "The collection:// URL of the destination data source. Use at most one of dataSourceUrl and pageUrl."
																	},
																	"pageUrl": {
																		"type": "string",
																		"description": "The Notion URL of a page to create subpages in. Use at most one of dataSourceUrl and pageUrl."
																	},
																	"viewId": {
																		"type": "string",
																		"format": "uuid",
																		"description": "An optional database view id in dataSourceUrl. New pages are created in that view."
																	},
																	"templateUrl": {
																		"type": "string",
																		"description": "An optional database template page URL that belongs to dataSourceUrl, or \"empty\" to create blank pages without the default template."
																	},
																	"label": {
																		"type": "string",
																		"description": "An optional custom label, limited to 150 characters. Prefer \"New {singular noun}\" when the database's created object is clear, for example \"New task\" for Tasks. Otherwise omit it to use the product default."
																	},
																	"icon": {
																		"type": "string",
																		"maxLength": 2000,
																		"description": "An optional custom icon override using tool-docs://notion/pages/notion-icons.md or a single emoji. Omit it to use the database icon, or the generic compose icon when the shortcut has no database. Set it only when the user requests an override or there is a clear semantic reason."
																	},
																	"openIn": {
																		"type": "string",
																		"enum": [
																			"side_peek",
																			"center_peek",
																			"full_page"
																		],
																		"description": "How pages opened from this item appear. Omit it to use the product default."
																	}
																}
															},
															{
																"type": "object",
																"required": ["type", "id", "pageUrl"],
																"additionalProperties": false,
																"properties": {
																	"type": {
																		"type": "string",
																		"enum": ["page_link"],
																		"description": "The page link item type."
																	},
																	"id": {
																		"type": "string",
																		"description": "Occurrence id from get_sidebar_tabs. Omit for a new shortcut."
																	},
																	"pageUrl": {
																		"type": "string",
																		"description": "The Notion URL of the page or database the shortcut navigates to. The shortcut always shows that target's own title and icon."
																	},
																	"viewId": {
																		"type": "string",
																		"format": "uuid",
																		"description": "An optional database view id. It must identify a view parented by the database in pageUrl. Omit it to open the user's most recently visited view."
																	},
																	"openIn": {
																		"type": "string",
																		"enum": [
																			"side_peek",
																			"center_peek",
																			"full_page"
																		],
																		"description": "How pages opened from this item appear. Omit it to use the product default."
																	}
																}
															},
															{
																"type": "object",
																"required": ["type", "id", "workflowId"],
																"additionalProperties": false,
																"properties": {
																	"type": {
																		"type": "string",
																		"enum": ["agent"],
																		"description": "The agent item type."
																	},
																	"id": {
																		"type": "string",
																		"description": "Occurrence id from get_sidebar_tabs. Omit for a new shortcut."
																	},
																	"workflowId": {
																		"type": "string",
																		"format": "uuid",
																		"description": "The id of the custom agent the shortcut navigates to."
																	}
																}
															},
															{
																"type": "object",
																"required": ["type", "id", "threadId"],
																"additionalProperties": false,
																"properties": {
																	"type": {
																		"type": "string",
																		"enum": ["chat_thread"],
																		"description": "The chat thread item type."
																	},
																	"id": {
																		"type": "string",
																		"description": "Occurrence id from get_sidebar_tabs. Omit for a new shortcut."
																	},
																	"threadId": {
																		"type": "string",
																		"format": "uuid",
																		"description": "The id of the AI chat thread the shortcut opens."
																	}
																}
															},
															{
																"type": "object",
																"required": ["type", "id"],
																"additionalProperties": false,
																"properties": {
																	"type": {
																		"type": "string",
																		"enum": ["chat_dashboard"],
																		"description": "The chat dashboard item type."
																	},
																	"id": {
																		"type": "string",
																		"description": "Occurrence id from get_sidebar_tabs. Omit for a new shortcut."
																	}
																}
															},
															{
																"type": "object",
																"required": ["type", "id"],
																"additionalProperties": false,
																"properties": {
																	"type": {
																		"type": "string",
																		"enum": ["settings"],
																		"description": "The settings item type."
																	},
																	"id": {
																		"type": "string",
																		"description": "Occurrence id from get_sidebar_tabs. Omit for a new shortcut."
																	},
																	"panel": {
																		"type": "string",
																		"enum": [
																			"profile",
																			"user_settings",
																			"notifications",
																			"mail_and_calendar",
																			"offline",
																			"settings",
																			"members",
																			"plans",
																			"billing",
																			"ai_usage_dashboard",
																			"subscription",
																			"security",
																			"identity_provisioning",
																			"admin_content_search",
																			"integrations",
																			"integrations_mcp",
																			"credentials",
																			"imports",
																			"teams",
																			"audit_log",
																			"analytics",
																			"public_pages",
																			"custom_emoji",
																			"verified_pages",
																			"requests",
																			"ai",
																			"meeting_notes",
																			"workers",
																			"developer",
																			"experiments",
																			"performance_toolbar",
																			"client_preview",
																			"personalization",
																			"user_similarity_scores",
																			"collection_debug",
																			"offline_mode_debug",
																			"design_previews",
																			"mobile_native"
																		],
																		"description": "An optional settings panel id. Omit it to open Settings without selecting a specific panel."
																	}
																}
															}
														]
													}
												},
												"sections": {
													"type": "array",
													"items": {
														"oneOf": [
															{
																"type": "string",
																"enum": [
																	"favorites",
																	"teamspaces",
																	"shared",
																	"private",
																	"workspace",
																	"agents",
																	"chats",
																	"notion_apps",
																	"meetings_today",
																	"recents",
																	"myMeetings",
																	"developer",
																	"pinned_chats",
																	"unread_chats"
																]
															},
															{
																"type": "object",
																"required": ["type", "itemLimit"],
																"additionalProperties": false,
																"properties": {
																	"type": {
																		"type": "string",
																		"enum": [
																			"favorites",
																			"teamspaces",
																			"shared",
																			"private",
																			"workspace",
																			"agents",
																			"chats",
																			"notion_apps",
																			"meetings_today",
																			"recents",
																			"myMeetings",
																			"developer",
																			"pinned_chats",
																			"unread_chats"
																		],
																		"description": "The built-in section id."
																	},
																	"itemLimit": {
																		"type": "integer",
																		"minimum": 1,
																		"maximum": 100,
																		"description": "Maximum visible items for this tab's occurrence of the section. Use the string form instead to use the workspace default."
																	}
																}
															},
															{
																"type": "object",
																"required": [
																	"type",
																	"id",
																	"viewUrl",
																	"itemLimit"
																],
																"additionalProperties": false,
																"properties": {
																	"type": {
																		"type": "string",
																		"enum": ["database_view"],
																		"description": "The database view section type."
																	},
																	"id": {
																		"type": "string",
																		"description": "Stable occurrence id returned by get_sidebar_tabs. Omit only when adding a new database view section."
																	},
																	"viewUrl": {
																		"type": "string",
																		"description": "An explicit view:// URL or Notion URL containing a v= view id. A database page URL without a view id is ambiguous and invalid."
																	},
																	"templateUrl": {
																		"type": "string",
																		"description": "An optional template page URL in the view's data source used by the section's New button, or \"empty\" to create blank pages without the default template."
																	},
																	"itemLimit": {
																		"type": "integer",
																		"minimum": 1,
																		"maximum": 100,
																		"description": "Maximum visible rows. Defaults to 5 when omitted."
																	},
																	"hidePageIcon": {
																		"type": "boolean",
																		"description": "Whether to hide page icons for rows in this section. Defaults to false."
																	},
																	"customName": {
																		"type": "string",
																		"maxLength": 150,
																		"description": "An optional sidebar-only name that replaces the underlying view name in this section's label. Omit it to use the view name."
																	},
																	"openIn": {
																		"type": "string",
																		"enum": [
																			"side_peek",
																			"center_peek",
																			"full_page"
																		],
																		"description": "How pages opened from this section appear. Omit it to use the database view's setting."
																	}
																}
															},
															{
																"type": "object",
																"required": ["type", "teamspaceUrl"],
																"additionalProperties": false,
																"properties": {
																	"type": {
																		"type": "string",
																		"enum": ["teamspace"],
																		"description": "The teamspace item type."
																	},
																	"teamspaceUrl": {
																		"type": "string",
																		"description": "The teamspace:// URL of a teamspace the current user has joined."
																	}
																}
															},
															{
																"type": "string",
																"enum": ["meeting_databases"]
															}
														]
													}
												}
											}
										}
									}
								}
							},
							"shortcutCatalog": {
								"type": "array",
								"items": {
									"type": "object",
									"required": ["id", "description", "examples"],
									"additionalProperties": false,
									"properties": {
										"id": {
											"type": "string",
											"enum": [
												"agent_companion",
												"new_page",
												"new_chat",
												"new_meeting_note",
												"new_database",
												"new_agent",
												"library",
												"calendar",
												"agents",
												"skills",
												"meeting_notes",
												"tasks",
												"marketplace",
												"agent",
												"chat_thread",
												"chat_dashboard",
												"page_link",
												"settings"
											]
										},
										"description": {
											"type": "string"
										},
										"examples": {
											"type": "array",
											"minItems": 1,
											"items": {
												"oneOf": [
													{
														"type": "string",
														"enum": [
															"agent_companion",
															"new_page",
															"new_chat",
															"new_meeting_note",
															"new_database",
															"new_agent",
															"library",
															"calendar",
															"agents",
															"skills",
															"meeting_notes",
															"tasks",
															"marketplace"
														]
													},
													{
														"type": "object",
														"required": ["type"],
														"additionalProperties": false,
														"properties": {
															"type": {
																"type": "string",
																"enum": ["new_page"],
																"description": "The new page item type."
															},
															"id": {
																"type": "string",
																"description": "Occurrence id from get_sidebar_tabs. Omit for a new shortcut."
															},
															"dataSourceUrl": {
																"type": "string",
																"description": "The collection:// URL of the destination data source. Use at most one of dataSourceUrl and pageUrl."
															},
															"pageUrl": {
																"type": "string",
																"description": "The Notion URL of a page to create subpages in. Use at most one of dataSourceUrl and pageUrl."
															},
															"viewId": {
																"type": "string",
																"format": "uuid",
																"description": "An optional database view id in dataSourceUrl. New pages are created in that view."
															},
															"templateUrl": {
																"type": "string",
																"description": "An optional database template page URL that belongs to dataSourceUrl, or \"empty\" to create blank pages without the default template."
															},
															"label": {
																"type": "string",
																"description": "An optional custom label, limited to 150 characters. Prefer \"New {singular noun}\" when the database's created object is clear, for example \"New task\" for Tasks. Otherwise omit it to use the product default."
															},
															"icon": {
																"type": "string",
																"maxLength": 2000,
																"description": "An optional custom icon override using tool-docs://notion/pages/notion-icons.md or a single emoji. Omit it to use the database icon, or the generic compose icon when the shortcut has no database. Set it only when the user requests an override or there is a clear semantic reason."
															},
															"openIn": {
																"type": "string",
																"enum": [
																	"side_peek",
																	"center_peek",
																	"full_page"
																],
																"description": "How pages opened from this item appear. Omit it to use the product default."
															}
														}
													},
													{
														"type": "object",
														"required": ["type", "pageUrl"],
														"additionalProperties": false,
														"properties": {
															"type": {
																"type": "string",
																"enum": ["page_link"],
																"description": "The page link item type."
															},
															"id": {
																"type": "string",
																"description": "Occurrence id from get_sidebar_tabs. Omit for a new shortcut."
															},
															"pageUrl": {
																"type": "string",
																"description": "The Notion URL of the page or database the shortcut navigates to. The shortcut always shows that target's own title and icon."
															},
															"viewId": {
																"type": "string",
																"format": "uuid",
																"description": "An optional database view id. It must identify a view parented by the database in pageUrl. Omit it to open the user's most recently visited view."
															},
															"openIn": {
																"type": "string",
																"enum": [
																	"side_peek",
																	"center_peek",
																	"full_page"
																],
																"description": "How pages opened from this item appear. Omit it to use the product default."
															}
														}
													},
													{
														"type": "object",
														"required": ["type", "workflowId"],
														"additionalProperties": false,
														"properties": {
															"type": {
																"type": "string",
																"enum": ["agent"],
																"description": "The agent item type."
															},
															"id": {
																"type": "string",
																"description": "Occurrence id from get_sidebar_tabs. Omit for a new shortcut."
															},
															"workflowId": {
																"type": "string",
																"format": "uuid",
																"description": "The id of the custom agent the shortcut navigates to."
															}
														}
													},
													{
														"type": "object",
														"required": ["type", "threadId"],
														"additionalProperties": false,
														"properties": {
															"type": {
																"type": "string",
																"enum": ["chat_thread"],
																"description": "The chat thread item type."
															},
															"id": {
																"type": "string",
																"description": "Occurrence id from get_sidebar_tabs. Omit for a new shortcut."
															},
															"threadId": {
																"type": "string",
																"format": "uuid",
																"description": "The id of the AI chat thread the shortcut opens."
															}
														}
													},
													{
														"type": "object",
														"required": ["type"],
														"additionalProperties": false,
														"properties": {
															"type": {
																"type": "string",
																"enum": ["chat_dashboard"],
																"description": "The chat dashboard item type."
															},
															"id": {
																"type": "string",
																"description": "Occurrence id from get_sidebar_tabs. Omit for a new shortcut."
															}
														}
													},
													{
														"type": "object",
														"required": ["type"],
														"additionalProperties": false,
														"properties": {
															"type": {
																"type": "string",
																"enum": ["settings"],
																"description": "The settings item type."
															},
															"id": {
																"type": "string",
																"description": "Occurrence id from get_sidebar_tabs. Omit for a new shortcut."
															},
															"panel": {
																"type": "string",
																"enum": [
																	"profile",
																	"user_settings",
																	"notifications",
																	"mail_and_calendar",
																	"offline",
																	"settings",
																	"members",
																	"plans",
																	"billing",
																	"ai_usage_dashboard",
																	"subscription",
																	"security",
																	"identity_provisioning",
																	"admin_content_search",
																	"integrations",
																	"integrations_mcp",
																	"credentials",
																	"imports",
																	"teams",
																	"audit_log",
																	"analytics",
																	"public_pages",
																	"custom_emoji",
																	"verified_pages",
																	"requests",
																	"ai",
																	"meeting_notes",
																	"workers",
																	"developer",
																	"experiments",
																	"performance_toolbar",
																	"client_preview",
																	"personalization",
																	"user_similarity_scores",
																	"collection_debug",
																	"offline_mode_debug",
																	"design_previews",
																	"mobile_native"
																],
																"description": "An optional settings panel id. Omit it to open Settings without selecting a specific panel."
															}
														}
													}
												]
											}
										}
									}
								}
							},
							"sectionCatalog": {
								"type": "array",
								"items": {
									"type": "object",
									"required": ["id", "description", "examples"],
									"additionalProperties": false,
									"properties": {
										"id": {
											"type": "string",
											"enum": [
												"favorites",
												"teamspaces",
												"shared",
												"private",
												"workspace",
												"agents",
												"chats",
												"notion_apps",
												"meetings_today",
												"recents",
												"myMeetings",
												"developer",
												"pinned_chats",
												"unread_chats",
												"database_view",
												"teamspace",
												"meeting_databases"
											]
										},
										"description": {
											"type": "string"
										},
										"examples": {
											"type": "array",
											"minItems": 1,
											"items": {
												"oneOf": [
													{
														"type": "string",
														"enum": [
															"favorites",
															"teamspaces",
															"shared",
															"private",
															"workspace",
															"agents",
															"chats",
															"notion_apps",
															"meetings_today",
															"recents",
															"myMeetings",
															"developer",
															"pinned_chats",
															"unread_chats"
														]
													},
													{
														"type": "object",
														"required": ["type"],
														"additionalProperties": false,
														"properties": {
															"type": {
																"type": "string",
																"enum": [
																	"favorites",
																	"teamspaces",
																	"shared",
																	"private",
																	"workspace",
																	"agents",
																	"chats",
																	"notion_apps",
																	"meetings_today",
																	"recents",
																	"myMeetings",
																	"developer",
																	"pinned_chats",
																	"unread_chats"
																],
																"description": "The built-in section id."
															},
															"itemLimit": {
																"type": "integer",
																"minimum": 1,
																"maximum": 100,
																"description": "Maximum visible items for this tab's occurrence of the section. Use the string form instead to use the workspace default."
															}
														}
													},
													{
														"type": "object",
														"required": ["type", "viewUrl"],
														"additionalProperties": false,
														"properties": {
															"type": {
																"type": "string",
																"enum": ["database_view"],
																"description": "The database view section type."
															},
															"id": {
																"type": "string",
																"description": "Stable occurrence id returned by get_sidebar_tabs. Omit only when adding a new database view section."
															},
															"viewUrl": {
																"type": "string",
																"description": "An explicit view:// URL or Notion URL containing a v= view id. A database page URL without a view id is ambiguous and invalid."
															},
															"templateUrl": {
																"type": "string",
																"description": "An optional template page URL in the view's data source used by the section's New button, or \"empty\" to create blank pages without the default template."
															},
															"itemLimit": {
																"type": "integer",
																"minimum": 1,
																"maximum": 100,
																"description": "Maximum visible rows. Defaults to 5 when omitted."
															},
															"hidePageIcon": {
																"type": "boolean",
																"description": "Whether to hide page icons for rows in this section. Defaults to false."
															},
															"customName": {
																"type": "string",
																"maxLength": 150,
																"description": "An optional sidebar-only name that replaces the underlying view name in this section's label. Omit it to use the view name."
															},
															"openIn": {
																"type": "string",
																"enum": [
																	"side_peek",
																	"center_peek",
																	"full_page"
																],
																"description": "How pages opened from this section appear. Omit it to use the database view's setting."
															}
														}
													},
													{
														"type": "object",
														"required": ["type", "teamspaceUrl"],
														"additionalProperties": false,
														"properties": {
															"type": {
																"type": "string",
																"enum": ["teamspace"],
																"description": "The teamspace item type."
															},
															"teamspaceUrl": {
																"type": "string",
																"description": "The teamspace:// URL or id of a teamspace the current user has joined."
															}
														}
													},
													{
														"type": "string",
														"enum": ["meeting_databases"]
													}
												]
											}
										}
									}
								}
							}
						}
					},
					{
						"type": "object",
						"properties": {},
						"additionalProperties": false
					},
					{
						"type": "object",
						"properties": {
							"ai_search_status": {
								"type": "string",
								"enum": ["available", "upgrade_required", "not_enabled"],
								"description": "The user's AI search access, with the same status get_tool_access reports for ai_search: available, upgrade_required when the plan lacks it, or not_enabled when something other than the plan blocks it, such as an admin setting or a billing hold."
							},
							"mcp_memories_enabled": {
								"type": "boolean",
								"description": "Whether hosted MCP lists the memory tools, resources, and instructions: MCP memories are rolled out to the workspace and neither the workspace nor the user turned memories off. A listing hint, not an access check."
							},
							"chatgpt_plugin_tools_enabled": {
								"type": "boolean",
								"description": "Whether hosted MCP registers the ChatGPT page editor tools: false when a workspace admin turned off opening Notion pages inside MCP clients. A listing hint, not an access check."
							},
							"mcp_memories_disabled_by": {
								"type": "string",
								"enum": ["workspace", "user"],
								"description": "Present when MCP memories are rolled out to the workspace but a setting turned them off: workspace or user. Hosted MCP then tells the model why memory tools are missing. A listing hint, not an access check."
							},
							"has_connected_sources": {
								"type": "boolean",
								"description": "Present when ai_search_status is available and the workspace is in the split-search cohort. Whether the workspace has an active connected source, so hosted MCP lists connector_search. A listing hint, not an access check."
							}
						},
						"additionalProperties": false,
						"required": [
							"ai_search_status",
							"mcp_memories_enabled",
							"chatgpt_plugin_tools_enabled"
						]
					},
					{
						"type": "object",
						"properties": {
							"id": {
								"type": "string",
								"format": "uuid",
								"description": "Identifier for the skill page."
							},
							"version_id": {
								"type": "string",
								"minLength": 64,
								"maxLength": 64,
								"description": "Stable content version for the generated skill directory."
							},
							"url": {
								"type": "string",
								"minLength": 1,
								"description": "Temporary signed URL for downloading the skill directory archive."
							}
						},
						"additionalProperties": false,
						"required": ["id", "version_id", "url"]
					},
					{
						"type": "object",
						"properties": {
							"id": {
								"type": "string",
								"format": "uuid",
								"description": "Identifier for the skill page."
							},
							"version_id": {
								"type": "string",
								"minLength": 64,
								"maxLength": 64,
								"description": "Stable content version for the generated skill directory."
							},
							"markdown": {
								"type": "string",
								"minLength": 1,
								"description": "Full SKILL.md contents, including the frontmatter."
							}
						},
						"additionalProperties": false,
						"required": ["id", "version_id", "markdown"]
					},
					{
						"type": "object",
						"properties": {
							"skills": {
								"type": "array",
								"items": {
									"type": "object",
									"properties": {
										"id": {
											"type": "string",
											"format": "uuid",
											"description": "The Skill page's ID. Fetch it to read the Skill."
										},
										"name": {
											"type": "string",
											"description": "The Skill's name."
										},
										"description": {
											"type": "string",
											"description": "When to use the Skill. Omitted when it has none."
										}
									},
									"additionalProperties": false,
									"required": ["id", "name"]
								},
								"maxItems": 50,
								"description": "The user's enabled Skills. Empty when the user has none."
							}
						},
						"additionalProperties": false,
						"required": ["skills"]
					},
					{
						"type": "object",
						"properties": {
							"result": {
								"type": "string"
							}
						},
						"additionalProperties": false,
						"required": ["result"]
					},
					{
						"type": "object",
						"properties": {
							"page_id": {
								"type": "string",
								"description": "The ID of the created page."
							},
							"page_url": {
								"type": "string",
								"description": "The Notion URL of the created page."
							},
							"mcp_notice": {
								"type": "object",
								"properties": {
									"type": {
										"type": "string",
										"const": "block_limit_grace",
										"description": "Always `block_limit_grace`"
									},
									"message": {
										"type": "string"
									},
									"grace_period_ends_at": {
										"type": "string"
									},
									"recovery": {
										"type": "object",
										"properties": {
											"type": {
												"type": "string",
												"const": "upgrade",
												"description": "Always `upgrade`"
											},
											"label": {
												"type": "string",
												"const": "Upgrade plan",
												"description": "Always `Upgrade plan`"
											},
											"url": {
												"type": "string"
											}
										},
										"additionalProperties": false,
										"required": ["type", "label", "url"]
									}
								},
								"additionalProperties": false,
								"required": ["type", "message", "grace_period_ends_at"]
							}
						},
						"additionalProperties": false,
						"required": ["page_id", "page_url"]
					},
					{
						"type": "object",
						"properties": {
							"type": {
								"type": "string",
								"enum": ["ai_search", "workspace_search"],
								"description": "The search backend that ran: workspace_search for structured or basic workspace search, or ai_search for unified search when AI access is available."
							},
							"results": {
								"type": "array",
								"items": {
									"type": "object",
									"properties": {
										"id": {
											"type": "string"
										},
										"title": {
											"type": "string"
										},
										"url": {
											"type": "string",
											"description": "Page ID for Notion results (pass to fetch tool) or full URL for external connector results."
										},
										"type": {
											"type": "string"
										},
										"highlight": {
											"type": "string"
										},
										"timestamp": {
											"type": "string"
										},
										"is_archived": {
											"type": "boolean",
											"description": "True when the Notion page or database is archived (directly or via an archived ancestor). Omitted otherwise."
										},
										"path": {
											"type": "string",
											"description": "Compact path showing where this result lives in Notion."
										},
										"verification": {
											"type": "object",
											"properties": {
												"state": {
													"type": "string",
													"enum": ["verified", "expired", "unverified"],
													"description": "One of: `verified`, `expired`, `unverified`"
												},
												"expires_at": {
													"type": "string"
												}
											},
											"additionalProperties": false,
											"required": ["state"],
											"description": "Native Notion verification state when available."
										},
										"parent_data_source_url": {
											"type": "string",
											"description": "For a database row, its data source URL (collection://...). Pass it to tools that take a data source URL. Omitted otherwise."
										}
									},
									"additionalProperties": false,
									"required": [
										"id",
										"title",
										"url",
										"type",
										"highlight",
										"timestamp"
									]
								},
								"maxItems": 100,
								"description": "An array of combined and deduplicated search results from the internal search queries."
							},
							"notices": {
								"type": "array",
								"items": {
									"type": "string"
								},
								"maxItems": 100,
								"description": "Explains search fallbacks and options that were not applied. Results may be broader than requested."
							}
						},
						"additionalProperties": false,
						"required": ["type", "results"]
					},
					{
						"type": "object",
						"properties": {
							"type": {
								"type": "string",
								"const": "user_search",
								"description": "The type of users search that was performed."
							},
							"results": {
								"type": "array",
								"items": {
									"type": "object",
									"properties": {
										"text": {
											"type": "string",
											"description": "All results of user search"
										}
									},
									"additionalProperties": false,
									"required": ["text"]
								},
								"maxItems": 100,
								"description": "An array of search results from the users search queries."
							}
						},
						"additionalProperties": false,
						"required": ["type", "results"]
					},
					{
						"type": "object",
						"properties": {
							"type": {
								"type": "string",
								"const": "ai_search",
								"description": "Identifies the AI-enabled content-search tool result, including structured Notion workspace searches."
							},
							"results": {
								"type": "array",
								"items": {
									"type": "object",
									"properties": {
										"id": {
											"type": "string"
										},
										"title": {
											"type": "string"
										},
										"url": {
											"type": "string",
											"description": "Page ID for Notion results (pass to fetch tool) or full URL for external connector results."
										},
										"type": {
											"type": "string"
										},
										"highlight": {
											"type": "string"
										},
										"timestamp": {
											"type": "string"
										},
										"is_archived": {
											"type": "boolean",
											"description": "True when the Notion page or database is archived (directly or via an archived ancestor). Omitted otherwise."
										},
										"path": {
											"type": "string",
											"description": "Compact path showing where this result lives in Notion."
										},
										"verification": {
											"type": "object",
											"properties": {
												"state": {
													"type": "string",
													"enum": ["verified", "expired", "unverified"],
													"description": "One of: `verified`, `expired`, `unverified`"
												},
												"expires_at": {
													"type": "string"
												}
											},
											"additionalProperties": false,
											"required": ["state"],
											"description": "Native Notion verification state when available."
										},
										"parent_data_source_url": {
											"type": "string",
											"description": "For a database row, its data source URL (collection://...). Pass it to tools that take a data source URL. Omitted otherwise."
										}
									},
									"additionalProperties": false,
									"required": [
										"id",
										"title",
										"url",
										"type",
										"highlight",
										"timestamp"
									]
								},
								"maxItems": 100,
								"description": "Search results from Notion and connected sources. Exact filters, non-relevance sorting, and filter-only browsing return Notion workspace results."
							},
							"notices": {
								"type": "array",
								"items": {
									"type": "string"
								},
								"maxItems": 100,
								"description": "Explains search fallbacks and options that were not applied. Results may be broader than requested."
							}
						},
						"additionalProperties": false,
						"required": ["type", "results"]
					},
					{
						"type": "object",
						"properties": {
							"type": {
								"type": "string",
								"const": "user_search",
								"description": "The type of users search that was performed."
							},
							"results": {
								"type": "array",
								"items": {
									"type": "object",
									"properties": {
										"text": {
											"type": "string",
											"description": "All results of user search"
										}
									},
									"additionalProperties": false,
									"required": ["text"]
								},
								"maxItems": 100,
								"description": "An array of search results from the users search queries."
							}
						},
						"additionalProperties": false,
						"required": ["type", "results"]
					},
					{
						"type": "object",
						"required": ["results"],
						"additionalProperties": false,
						"properties": {
							"warnings": {
								"type": "array",
								"items": {
									"type": "string"
								},
								"description": "Warnings about input fallbacks or ignored options."
							},
							"results": {
								"type": "array",
								"items": {
									"type": "object",
									"required": ["id", "type", "title", "snippet"],
									"additionalProperties": false,
									"properties": {
										"id": {
											"type": "string"
										},
										"type": {
											"type": "string",
											"enum": [
												"block",
												"properties",
												"page",
												"helpdoc",
												"helpdoc-section",
												"webpage",
												"thread",
												"slack",
												"google-drive",
												"github",
												"jira",
												"microsoft-teams",
												"sharepoint",
												"gmail",
												"linear",
												"outlook",
												"notion-mail",
												"google-calendar",
												"notion-calendar",
												"salesforce",
												"asana",
												"box",
												"confluence",
												"memory"
											]
										},
										"title": {
											"type": "string"
										},
										"snippet": {
											"type": "string"
										},
										"highlight": {
											"type": "object",
											"additionalProperties": false,
											"properties": {
												"blocks": {
													"type": "array",
													"description": "Matching excerpts. Pass blockId to load_block_id when available; the result id identifies the page.",
													"items": {
														"type": "object",
														"required": ["text"],
														"additionalProperties": false,
														"properties": {
															"blockId": {
																"type": "string"
															},
															"text": {
																"type": "string"
															}
														}
													}
												}
											}
										},
										"url": {
											"type": "string"
										},
										"lastEdited": {
											"type": "string"
										},
										"metadata": {
											"type": "object"
										},
										"path": {
											"oneOf": [
												{
													"type": "string"
												},
												{
													"type": "array",
													"items": {
														"oneOf": [
															{
																"type": "object",
																"required": ["type", "collectionId", "title"],
																"additionalProperties": false,
																"properties": {
																	"type": {
																		"type": "string",
																		"enum": ["database"]
																	},
																	"collectionId": {
																		"type": "string"
																	},
																	"title": {
																		"type": "string"
																	}
																}
															},
															{
																"type": "object",
																"required": ["type", "pageId", "title"],
																"additionalProperties": false,
																"properties": {
																	"type": {
																		"type": "string",
																		"enum": ["page"]
																	},
																	"pageId": {
																		"type": "string"
																	},
																	"title": {
																		"type": "string"
																	}
																}
															}
														]
													}
												}
											]
										}
									}
								}
							},
							"searchTargetStatuses": {
								"type": "array",
								"items": {
									"type": "object",
									"required": ["target", "status"],
									"additionalProperties": false,
									"properties": {
										"target": {
											"type": "string",
											"enum": [
												"notion",
												"web",
												"helpdocs",
												"slack",
												"google-drive",
												"github",
												"jira",
												"microsoft-teams",
												"sharepoint",
												"gmail",
												"linear",
												"outlook",
												"notion-mail",
												"google-calendar",
												"notion-calendar",
												"salesforce",
												"asana",
												"box",
												"confluence",
												"memory"
											]
										},
										"status": {
											"type": "string",
											"enum": ["error", "timeout"]
										}
									}
								}
							},
							"searchedSources": {
								"type": "array",
								"items": {
									"type": "string",
									"enum": [
										"notion",
										"web",
										"helpdocs",
										"slack",
										"google-drive",
										"github",
										"jira",
										"microsoft-teams",
										"sharepoint",
										"gmail",
										"linear",
										"outlook",
										"notion-mail",
										"google-calendar",
										"notion-calendar",
										"salesforce",
										"asana",
										"box",
										"confluence",
										"memory"
									]
								}
							}
						}
					},
					{
						"type": "object",
						"properties": {
							"results": {
								"type": "array",
								"items": {
									"type": "object",
									"properties": {
										"id": {
											"type": "string",
											"format": "uuid"
										},
										"title": {
											"type": "string",
											"maxLength": 2000
										},
										"url": {
											"type": "string",
											"format": "uri"
										},
										"snippet": {
											"type": "string",
											"maxLength": 500
										}
									},
									"additionalProperties": false,
									"required": ["id", "title", "url", "snippet"]
								},
								"maxItems": 50
							}
						},
						"additionalProperties": false,
						"required": ["results"]
					},
					{
						"type": "object",
						"properties": {
							"current_tool_access": {
								"type": "object",
								"additionalProperties": {
									"type": "object",
									"properties": {
										"status": {
											"type": "string",
											"enum": [
												"available",
												"available_with_limit",
												"plan_required",
												"upgrade_required",
												"full_version_required",
												"not_enabled"
											],
											"description": "Whether the tool is available without a limit, available up to a plan-specific limit, requires a plan, requires the full version of Notion MCP, requires an upgrade, or is disabled for this workspace."
										},
										"restricted_parameters": {
											"type": "object",
											"additionalProperties": {
												"type": "string"
											},
											"description": "Parameter-specific restrictions that apply even when the tool is available."
										},
										"landing_page_action": {
											"type": "string",
											"enum": ["start_trial", "request_trial", "learn_more"],
											"description": "The next step available from the Notion MCP landing page."
										},
										"landing_page_url": {
											"type": "string",
											"description": "Notion MCP landing page that explains how to get full access and the available next steps."
										},
										"upgrade_url": {
											"type": "string",
											"description": "Trackable workspace upgrade link, when upgrading can change access."
										},
										"full_version_url": {
											"type": "string",
											"description": "Notion MCP landing page for a tool that requires the full version of Notion MCP."
										}
									},
									"additionalProperties": false,
									"required": ["status"]
								},
								"description": "Access states and parameter restrictions for tools visible to this connection. Legacy search is omitted when ai_search is available; user lookup uses ai_search with query_type=\"user\"."
							}
						},
						"additionalProperties": false,
						"required": ["current_tool_access"]
					},
					{
						"type": "object",
						"properties": {
							"title": {
								"type": "string"
							},
							"url": {
								"type": "string"
							},
							"text": {
								"type": "string"
							},
							"metadata": {
								"type": "object",
								"properties": {
									"type": {
										"type": "string",
										"enum": [
											"page",
											"block",
											"folder",
											"database",
											"data_source",
											"view",
											"self",
											"documentation",
											"memory",
											"connector"
										],
										"description": "One of: `page`, `block`, `folder`, `database`, `data_source`, `view`, `self`, `documentation`, `memory`, `connector`"
									}
								},
								"additionalProperties": false,
								"required": ["type"]
							},
							"references": {
								"type": "object",
								"additionalProperties": {
									"type": "string"
								}
							},
							"cover": {
								"oneOf": [
									{
										"type": "object",
										"properties": {
											"type": {
												"type": "string",
												"const": "external",
												"description": "Always `external`"
											},
											"external": {
												"type": "object",
												"properties": {
													"url": {
														"type": "string"
													}
												},
												"additionalProperties": false,
												"required": ["url"]
											}
										},
										"additionalProperties": false,
										"required": ["type", "external"],
										"title": "External"
									},
									{
										"type": "object",
										"properties": {
											"type": {
												"type": "string",
												"const": "file",
												"description": "Always `file`"
											},
											"file": {
												"type": "object",
												"properties": {
													"url": {
														"type": "string"
													},
													"expiry_time": {
														"type": "string",
														"format": "date-time"
													}
												},
												"additionalProperties": false,
												"required": ["url", "expiry_time"]
											}
										},
										"additionalProperties": false,
										"required": ["type", "file"],
										"title": "File"
									},
									{
										"type": "null"
									}
								],
								"description": "Page cover in the REST API file format. null means no cover. An external object identifies an external or gallery image; a file object has a temporary signed URL and expiry_time. Re-fetch to refresh an expired URL. An omitted cover is unavailable or not applicable. Cover metadata is separate from database properties."
							},
							"icon": {
								"oneOf": [
									{
										"type": "object",
										"properties": {
											"type": {
												"type": "string",
												"const": "emoji",
												"description": "Always `emoji`"
											},
											"emoji": {
												"type": "string"
											}
										},
										"additionalProperties": false,
										"required": ["type", "emoji"],
										"title": "Emoji"
									},
									{
										"type": "object",
										"properties": {
											"type": {
												"type": "string",
												"const": "file",
												"description": "Always `file`"
											},
											"file": {
												"type": "object",
												"properties": {
													"url": {
														"type": "string"
													},
													"expiry_time": {
														"type": "string",
														"format": "date-time"
													}
												},
												"additionalProperties": false,
												"required": ["url", "expiry_time"]
											}
										},
										"additionalProperties": false,
										"required": ["type", "file"],
										"title": "File"
									},
									{
										"type": "object",
										"properties": {
											"type": {
												"type": "string",
												"const": "external",
												"description": "Always `external`"
											},
											"external": {
												"type": "object",
												"properties": {
													"url": {
														"type": "string"
													}
												},
												"additionalProperties": false,
												"required": ["url"]
											}
										},
										"additionalProperties": false,
										"required": ["type", "external"],
										"title": "External"
									},
									{
										"type": "object",
										"properties": {
											"type": {
												"type": "string",
												"const": "custom_emoji",
												"description": "Always `custom_emoji`"
											},
											"custom_emoji": {
												"type": "object",
												"properties": {
													"id": {
														"type": "string",
														"format": "uuid"
													},
													"name": {
														"type": "string"
													},
													"url": {
														"type": "string",
														"format": "uri"
													}
												},
												"additionalProperties": false,
												"required": ["id", "name", "url"]
											}
										},
										"additionalProperties": false,
										"required": ["type", "custom_emoji"],
										"title": "Custom Emoji"
									},
									{
										"type": "object",
										"properties": {
											"type": {
												"type": "string",
												"const": "icon",
												"description": "Always `icon`"
											},
											"icon": {
												"type": "object",
												"properties": {
													"name": {
														"type": "string"
													},
													"color": {
														"type": "string",
														"enum": [
															"gray",
															"lightgray",
															"brown",
															"yellow",
															"orange",
															"green",
															"blue",
															"purple",
															"pink",
															"red"
														],
														"description": "One of: `gray`, `lightgray`, `brown`, `yellow`, `orange`, `green`, `blue`, `purple`, `pink`, `red`"
													}
												},
												"additionalProperties": false,
												"required": ["name", "color"]
											}
										},
										"additionalProperties": false,
										"required": ["type", "icon"],
										"title": "Icon"
									},
									{
										"type": "null"
									}
								],
								"description": "Page icon in the REST API icon format: emoji, icon, custom_emoji, external, or a temporary signed file object. null means no icon. Re-fetch expired file URLs. An omitted icon is unavailable or not applicable. Page Markdown keeps its string icon attribute for editing round trips."
							},
							"is_archived": {
								"type": "boolean"
							},
							"self": {
								"type": "object",
								"properties": {
									"workspace": {
										"type": "object",
										"properties": {
											"id": {
												"type": "string",
												"description": "The unique identifier of the workspace (workspace_id)."
											},
											"name": {
												"type": "string",
												"description": "The display name of the workspace (workspace_name)."
											}
										},
										"additionalProperties": false,
										"required": ["id", "name"],
										"description": "The connected Notion workspace."
									},
									"user": {
										"type": "object",
										"properties": {
											"type": {
												"type": "string",
												"enum": ["person", "bot"],
												"description": "The type of user: 'person' or 'bot'."
											},
											"id": {
												"type": "string",
												"description": "The unique identifier of the user."
											},
											"name": {
												"type": "string",
												"description": "The display name of the user."
											},
											"email": {
												"type": "string",
												"description": "The email address of the user (only for person types)."
											}
										},
										"additionalProperties": false,
										"required": ["type", "id", "name"],
										"description": "The authenticated user (or bot) for this connection."
									},
									"current_tool_access": {
										"type": "object",
										"additionalProperties": {
											"type": "object",
											"properties": {
												"status": {
													"type": "string",
													"enum": [
														"available",
														"available_with_limit",
														"plan_required",
														"upgrade_required",
														"full_version_required",
														"not_enabled"
													],
													"description": "Whether the tool is available without a limit, available up to a plan-specific limit, requires a plan, requires the full version of Notion MCP, requires an upgrade, or is disabled for this workspace."
												},
												"restricted_parameters": {
													"type": "object",
													"additionalProperties": {
														"type": "string"
													},
													"description": "Parameter-specific restrictions that apply even when the tool is available."
												},
												"landing_page_action": {
													"type": "string",
													"enum": [
														"start_trial",
														"request_trial",
														"learn_more"
													],
													"description": "The next step available from the Notion MCP landing page."
												},
												"landing_page_url": {
													"type": "string",
													"description": "Notion MCP landing page that explains how to get full access and the available next steps."
												},
												"upgrade_url": {
													"type": "string",
													"description": "Trackable workspace upgrade link, when upgrading can change access."
												},
												"full_version_url": {
													"type": "string",
													"description": "Notion MCP landing page for a tool that requires the full version of Notion MCP."
												}
											},
											"additionalProperties": false,
											"required": ["status"]
										},
										"description": "Map of tools visible to this MCP caller and their access state for the workspace. When ai_search is available, legacy search is omitted: use ai_search for every content search. User lookup uses ai_search with query_type=\"user\". Otherwise use search for content."
									}
								},
								"additionalProperties": false,
								"required": ["workspace", "user"],
								"description": "Present only when fetching id \"self\": the connected workspace and user identity."
							},
							"truncated": {
								"type": "boolean",
								"description": "Whether fetched page content omitted subtrees. Check unknown_block_count and unknown_block_ids before relying on the content."
							},
							"unknown_block_ids": {
								"type": "array",
								"items": {
									"type": "string"
								},
								"maxItems": 50
							},
							"unknown_block_count": {
								"type": "integer",
								"minimum": 0
							},
							"path": {
								"type": "string",
								"description": "Compact path showing where this page lives in Notion. Use it with verification and edit time to assess the source."
							},
							"page_last_edited_at": {
								"type": "string",
								"description": "When the page record itself was last edited. Treat recency as a contextual tiebreaker, not proof that the source is authoritative."
							},
							"verification": {
								"type": "object",
								"properties": {
									"state": {
										"type": "string",
										"enum": ["verified", "expired", "unverified"],
										"description": "One of: `verified`, `expired`, `unverified`"
									},
									"expires_at": {
										"type": "string"
									}
								},
								"additionalProperties": false,
								"required": ["state"],
								"description": "Native Notion verification state when available. Omission means unavailable or not applicable."
							}
						},
						"additionalProperties": false,
						"required": ["title", "url", "text", "metadata"]
					},
					{
						"type": "object",
						"properties": {
							"results": {
								"type": "array",
								"items": {
									"type": "object",
									"properties": {
										"id": {
											"type": "string",
											"description": "The ID of the page moved to Trash."
										},
										"url": {
											"type": "string",
											"description": "The canonical URL of the page."
										},
										"title": {
											"type": "string",
											"description": "The title at the time it was moved to Trash."
										}
									},
									"additionalProperties": false,
									"required": ["id", "url", "title"]
								},
								"maxItems": 20,
								"description": "One entry per page moved to Trash, in request order after de-duplication."
							},
							"note": {
								"type": "string",
								"description": "Where the trashed items went and how to restore them."
							}
						},
						"additionalProperties": false,
						"required": ["results", "note"]
					},
					{
						"type": "object",
						"properties": {
							"results": {
								"type": "array",
								"items": {
									"type": "object",
									"properties": {
										"id": {
											"type": "string",
											"description": "The ID of the database moved to Trash."
										},
										"url": {
											"type": "string",
											"description": "The canonical URL of the database."
										},
										"title": {
											"type": "string",
											"description": "The title at the time it was moved to Trash."
										}
									},
									"additionalProperties": false,
									"required": ["id", "url", "title"]
								},
								"maxItems": 20,
								"description": "One entry per database moved to Trash, in request order after de-duplication."
							},
							"note": {
								"type": "string",
								"description": "Where the trashed items went and how to restore them."
							}
						},
						"additionalProperties": false,
						"required": ["results", "note"]
					},
					{
						"type": "object",
						"properties": {
							"results": {
								"type": "array",
								"items": {
									"type": "object",
									"properties": {
										"id": {
											"type": "string",
											"format": "uuid",
											"description": "The ID of the restored page or database."
										},
										"url": {
											"type": "string",
											"description": "The canonical URL of the restored page or database."
										},
										"type": {
											"type": "string",
											"enum": ["page", "database"],
											"description": "Whether the restored target is a page or a database."
										},
										"title": {
											"type": "string",
											"description": "The plain-text title. Empty when the page or database is untitled."
										}
									},
									"additionalProperties": false,
									"required": ["id", "url", "type", "title"]
								},
								"maxItems": 20,
								"description": "One entry per restored page or database, in request order after de-duplication."
							}
						},
						"additionalProperties": false,
						"required": ["results"]
					},
					{
						"type": "object",
						"properties": {
							"file_upload_id": {
								"$ref": "#/components/schemas/idResponse",
								"description": "The Public API FileUpload ID for the uploaded file."
							},
							"filename": {
								"type": "string",
								"description": "The normalized filename stored in Notion."
							},
							"content_type": {
								"type": "string",
								"description": "The normalized MIME type of the uploaded file."
							},
							"content_length": {
								"type": "integer",
								"minimum": 0,
								"description": "The byte length of the uploaded file."
							},
							"status": {
								"type": "string",
								"const": "uploaded",
								"description": "The completed upload status."
							},
							"markdown_source": {
								"type": "string",
								"description": "An opaque source reference accepted by Notion-flavored Markdown media blocks. Attach it within one hour; unattached uploads expire and are deleted."
							},
							"suggested_markdown": {
								"type": "string",
								"description": "A ready-to-use Notion-flavored Markdown block for placing the file on a page."
							}
						},
						"additionalProperties": false,
						"required": [
							"file_upload_id",
							"filename",
							"content_type",
							"content_length",
							"status",
							"markdown_source",
							"suggested_markdown"
						]
					},
					{
						"type": "object",
						"properties": {
							"file_upload_id": {
								"$ref": "#/components/schemas/idResponse",
								"description": "The FileUpload ID reserved for this upload."
							},
							"filename": {
								"type": "string",
								"description": "The normalized filename stored in Notion."
							},
							"content_type": {
								"type": "string",
								"description": "The normalized MIME type expected by Notion."
							},
							"upload_url": {
								"type": "string",
								"description": "The Public API URL that accepts the single-part multipart upload."
							},
							"upload_method": {
								"type": "string",
								"const": "POST",
								"description": "The HTTP method to use for the upload request."
							},
							"upload_headers": {
								"type": "object",
								"properties": {
									"authorization": {
										"type": "string",
										"description": "A short-lived bearer authorization value to send with the upload request."
									}
								},
								"additionalProperties": false,
								"required": ["authorization"],
								"description": "Headers to include with the upload request."
							},
							"upload_form_field": {
								"type": "string",
								"const": "file",
								"description": "The multipart/form-data field in which to send the file."
							},
							"expires_at": {
								"type": "string",
								"format": "date-time",
								"description": "When the short-lived upload authorization expires."
							}
						},
						"additionalProperties": false,
						"required": [
							"file_upload_id",
							"filename",
							"content_type",
							"upload_url",
							"upload_method",
							"upload_headers",
							"upload_form_field",
							"expires_at"
						]
					},
					{
						"type": "object",
						"properties": {
							"file_upload_id": {
								"$ref": "#/components/schemas/idResponse",
								"description": "The Public API FileUpload ID that was downloaded."
							},
							"filename": {
								"type": "string",
								"description": "The normalized filename stored in Notion."
							},
							"content_type": {
								"type": "string",
								"description": "The normalized MIME type of the downloaded file."
							},
							"content_length": {
								"type": "integer",
								"minimum": 0,
								"description": "The UTF-8 byte length of the downloaded content."
							},
							"content": {
								"type": "string",
								"description": "The complete UTF-8 text content of the attachment."
							}
						},
						"additionalProperties": false,
						"required": [
							"file_upload_id",
							"filename",
							"content_type",
							"content_length",
							"content"
						]
					},
					{
						"type": "object",
						"properties": {
							"files": {
								"type": "array",
								"items": {
									"type": "object",
									"properties": {
										"reference": {
											"type": "string",
											"description": "The file reference that was resolved."
										},
										"url": {
											"type": "string",
											"description": "A signed download URL for the file."
										},
										"expiry_time": {
											"type": "string",
											"description": "When the signed URL stops working, as an ISO 8601 timestamp."
										}
									},
									"additionalProperties": false,
									"required": ["reference", "url", "expiry_time"]
								},
								"description": "A signed download URL for each reference that resolved, in request order."
							},
							"unresolved": {
								"type": "array",
								"items": {
									"type": "object",
									"properties": {
										"reference": {
											"type": "string",
											"description": "The file reference that did not resolve."
										},
										"reason": {
											"type": "string",
											"enum": ["invalid_reference", "file_not_found"],
											"description": "Why the reference did not resolve."
										}
									},
									"additionalProperties": false,
									"required": ["reference", "reason"]
								},
								"description": "References that did not resolve, in request order. invalid_reference means the value is not a notion-file-block:// reference; file_not_found means the file does not exist or you don't have access to it."
							}
						},
						"additionalProperties": false,
						"required": ["files", "unresolved"]
					},
					{
						"type": "object",
						"properties": {
							"result": {
								"type": "string",
								"description": "A rendered Markdown string describing the structure and details of the newly created database."
							},
							"mcp_notice": {
								"type": "object",
								"properties": {
									"type": {
										"type": "string",
										"const": "block_limit_grace",
										"description": "Always `block_limit_grace`"
									},
									"message": {
										"type": "string"
									},
									"grace_period_ends_at": {
										"type": "string"
									},
									"recovery": {
										"type": "object",
										"properties": {
											"type": {
												"type": "string",
												"const": "upgrade",
												"description": "Always `upgrade`"
											},
											"label": {
												"type": "string",
												"const": "Upgrade plan",
												"description": "Always `Upgrade plan`"
											},
											"url": {
												"type": "string"
											}
										},
										"additionalProperties": false,
										"required": ["type", "label", "url"]
									}
								},
								"additionalProperties": false,
								"required": ["type", "message", "grace_period_ends_at"]
							}
						},
						"additionalProperties": false,
						"required": ["result"]
					},
					{
						"type": "object",
						"properties": {
							"id": {
								"$ref": "#/components/schemas/idResponse",
								"description": "The canonical ID of the created Folder."
							},
							"parent": {
								"oneOf": [
									{
										"type": "object",
										"properties": {
											"page_id": {
												"$ref": "#/components/schemas/idResponse",
												"description": "The ID of the page that owns the Folder."
											}
										},
										"additionalProperties": false,
										"required": ["page_id"]
									},
									{
										"type": "object",
										"properties": {
											"folder_id": {
												"$ref": "#/components/schemas/idResponse",
												"description": "The ID of the Folder that contains the created Folder."
											}
										},
										"additionalProperties": false,
										"required": ["folder_id"]
									}
								],
								"description": "The page or Folder that contains the created Folder."
							},
							"url": {
								"type": "string",
								"description": "The canonical URL of the created Folder."
							},
							"mcp_notice": {
								"type": "object",
								"properties": {
									"type": {
										"type": "string",
										"const": "block_limit_grace",
										"description": "Always `block_limit_grace`"
									},
									"message": {
										"type": "string"
									},
									"grace_period_ends_at": {
										"type": "string"
									},
									"recovery": {
										"type": "object",
										"properties": {
											"type": {
												"type": "string",
												"const": "upgrade",
												"description": "Always `upgrade`"
											},
											"label": {
												"type": "string",
												"const": "Upgrade plan",
												"description": "Always `Upgrade plan`"
											},
											"url": {
												"type": "string"
											}
										},
										"additionalProperties": false,
										"required": ["type", "label", "url"]
									}
								},
								"additionalProperties": false,
								"required": ["type", "message", "grace_period_ends_at"]
							}
						},
						"additionalProperties": false,
						"required": ["id", "parent", "url"]
					},
					{
						"type": "object",
						"properties": {
							"folder_id": {
								"type": "string",
								"description": "The ID of the updated Folder."
							},
							"command": {
								"type": "string",
								"enum": ["add_files", "remove_files", "add_subfolder"],
								"description": "The Folder update that was applied."
							},
							"updated_item_count": {
								"type": "integer",
								"minimum": 0,
								"description": "The number of Folder items updated."
							},
							"created_folder_id": {
								"type": "string",
								"description": "The ID of the created nested Folder, when applicable."
							},
							"created_folder_url": {
								"type": "string",
								"description": "The URL of the created nested Folder, when applicable."
							}
						},
						"required": ["folder_id", "command", "updated_item_count"]
					},
					{
						"type": "object",
						"properties": {
							"result": {
								"type": "string",
								"description": "A rendered Markdown string describing the structure and details of the updated data source."
							}
						},
						"additionalProperties": false,
						"required": ["result"]
					},
					{
						"type": "object",
						"properties": {
							"results": {
								"type": "array",
								"items": {
									"type": "object",
									"additionalProperties": {
										"oneOf": [
											{
												"type": "string"
											},
											{
												"type": "number"
											},
											{
												"type": "boolean"
											},
											{
												"type": "array",
												"items": {
													"type": "string"
												},
												"maxItems": 100
											},
											{
												"type": "null"
											}
										]
									}
								},
								"maxItems": 100,
								"description": "Array of query result rows, where each row is a record with column names as keys"
							},
							"has_more": {
								"type": "boolean",
								"description": "Whether there are more results available beyond the returned limit"
							},
							"sync_metadata": {
								"type": "object",
								"properties": {
									"external_database_sync": {
										"type": "object",
										"properties": {
											"provider": {
												"type": "string"
											},
											"sync_id": {
												"type": "string"
											}
										},
										"additionalProperties": false,
										"required": ["provider", "sync_id"]
									},
									"external_collection_type": {
										"type": "string"
									},
									"sync_id": {
										"type": "string"
									},
									"sync_state": {
										"type": "object",
										"properties": {
											"syncing": {
												"anyOf": [
													{
														"type": "string",
														"enum": ["row_limit_exceeded"]
													},
													{
														"type": "boolean",
														"enum": [false, true]
													}
												]
											},
											"last_sync_checkpoint_at": {
												"type": "number"
											},
											"last_sync_heartbeat_at": {
												"type": "number"
											},
											"last_synced_at": {
												"type": "number"
											}
										},
										"additionalProperties": false,
										"required": ["syncing"]
									},
									"synced_collection_key": {
										"type": "string"
									}
								},
								"additionalProperties": false,
								"description": "Stored sync state of the queried data source, when available."
							},
							"data_source_ids": {
								"type": "array",
								"items": {
									"type": "string"
								},
								"maxItems": 100,
								"description": "IDs of data sources that were queried (only present for SQL queries)"
							},
							"next_cursor": {
								"type": "string",
								"description": "Cursor for the next page of results. Use this value as start_cursor in the next request to get the next page."
							},
							"request_status": {
								"$ref": "#/components/schemas/requestStatusResponse",
								"description": "Set when the result set is incomplete due to a server-side query limit."
							}
						},
						"additionalProperties": false,
						"required": ["results", "has_more"]
					},
					{
						"type": "object",
						"properties": {
							"results": {
								"type": "array",
								"items": {
									"type": "object",
									"additionalProperties": {
										"oneOf": [
											{
												"type": "string"
											},
											{
												"type": "number"
											},
											{
												"type": "boolean"
											},
											{
												"type": "array",
												"items": {
													"type": "string"
												},
												"maxItems": 100
											},
											{
												"type": "null"
											}
										]
									}
								},
								"maxItems": 100,
								"description": "Array of query result rows, where each row is a record with column names as keys"
							},
							"has_more": {
								"type": "boolean",
								"description": "Whether there are more results available beyond the returned limit"
							},
							"data_source_ids": {
								"type": "array",
								"items": {
									"type": "string"
								},
								"maxItems": 100,
								"description": "IDs of data sources that were queried (only present for SQL queries)"
							},
							"next_cursor": {
								"type": "string",
								"description": "Cursor for the next page of results. Use this value as start_cursor in the next request to get the next page."
							},
							"request_status": {
								"$ref": "#/components/schemas/requestStatusResponse",
								"description": "Set when the result set is incomplete due to a server-side query limit."
							}
						},
						"additionalProperties": false,
						"required": ["results", "has_more"]
					},
					{
						"type": "object",
						"properties": {
							"results": {
								"type": "array",
								"items": {
									"type": "object",
									"additionalProperties": {
										"oneOf": [
											{
												"type": "string"
											},
											{
												"type": "number"
											},
											{
												"type": "boolean"
											},
											{
												"type": "array",
												"items": {
													"type": "string"
												},
												"maxItems": 100
											},
											{
												"type": "null"
											}
										]
									}
								},
								"maxItems": 100,
								"description": "Array of meeting note rows, where each row is a record with column names as keys"
							},
							"has_more": {
								"type": "boolean",
								"description": "Whether there are more results available beyond the returned limit"
							}
						},
						"additionalProperties": false,
						"required": ["results", "has_more"]
					},
					{
						"type": "object",
						"properties": {
							"result": {
								"type": "object",
								"properties": {
									"status": {
										"type": "string",
										"const": "success",
										"description": "The status of the operation."
									},
									"id": {
										"type": "string",
										"description": "The ID of the created comment."
									},
									"discussion_id": {
										"type": "string",
										"description": "The ID of the discussion containing the comment."
									}
								},
								"additionalProperties": false,
								"required": ["status", "id", "discussion_id"],
								"description": "The result of the create comment operation."
							}
						},
						"additionalProperties": false,
						"required": ["result"]
					},
					{
						"type": "object",
						"properties": {
							"suggested_edits_status": {
								"type": "string",
								"enum": ["included", "upgrade_required", "not_enabled"],
								"description": "Whether pending suggested edits were included, require a Business plan, or are not enabled for this connection."
							},
							"text": {
								"type": "string",
								"description": "XML-formatted discussions and comments from the page."
							}
						},
						"additionalProperties": false,
						"required": ["suggested_edits_status"]
					},
					{
						"type": "object",
						"properties": {
							"comment_id": {
								"type": "string"
							}
						},
						"additionalProperties": false,
						"required": ["comment_id"]
					},
					{
						"type": "object",
						"properties": {
							"comment_id": {
								"type": "string"
							},
							"discussion_id": {
								"type": "string"
							}
						},
						"additionalProperties": false,
						"required": ["comment_id", "discussion_id"]
					},
					{
						"type": "object",
						"properties": {
							"discussion_id": {
								"type": "string"
							}
						},
						"additionalProperties": false,
						"required": ["discussion_id"]
					},
					{
						"type": "object",
						"properties": {
							"comment_id": {
								"type": "string"
							},
							"reactions": {
								"type": "array",
								"items": {
									"type": "object",
									"properties": {
										"emoji": {
											"type": "string"
										},
										"reacted_by_current_user": {
											"type": "boolean"
										},
										"reactor_urls": {
											"type": "array",
											"items": {
												"type": "string"
											}
										}
									},
									"additionalProperties": false,
									"required": [
										"emoji",
										"reacted_by_current_user",
										"reactor_urls"
									]
								}
							}
						},
						"additionalProperties": false,
						"required": ["comment_id", "reactions"]
					},
					{
						"type": "object",
						"properties": {
							"suggested_edit_url": {
								"type": "string",
								"description": "The stable discussion URL for this suggested edit."
							},
							"status": {
								"type": "string",
								"enum": ["pending", "accepted", "rejected"],
								"description": "The suggestion's lifecycle state after this call."
							}
						},
						"additionalProperties": false,
						"required": ["suggested_edit_url", "status"]
					},
					{
						"type": "object",
						"properties": {
							"status": {
								"type": "string",
								"const": "pending",
								"description": "The suggestion's current lifecycle state."
							},
							"diff": {
								"type": "string",
								"description": "A compact Markdown before-and-after diff for the proposed change."
							},
							"allowed_actions": {
								"type": "array",
								"items": {
									"type": "string",
									"enum": ["accept", "reject"],
									"description": "One of: `accept`, `reject`"
								},
								"maxItems": 100,
								"description": "Actions the caller may currently take on this pending suggestion."
							}
						},
						"additionalProperties": false,
						"required": ["status", "diff", "allowed_actions"]
					},
					{
						"type": "object",
						"properties": {
							"suggested_edit_url": {
								"type": "string",
								"description": "The stable discussion URL for this suggested edit."
							},
							"status": {
								"type": "string",
								"enum": ["pending", "accepted", "rejected"],
								"description": "The suggestion's lifecycle state after this call."
							}
						},
						"additionalProperties": false,
						"required": ["suggested_edit_url", "status"]
					},
					{
						"type": "object",
						"properties": {
							"value": {
								"oneOf": [
									{
										"type": "string"
									},
									{
										"type": "number"
									},
									{
										"type": "boolean"
									},
									{
										"type": "null"
									}
								]
							}
						},
						"additionalProperties": false,
						"required": ["value"]
					},
					{
						"type": "object",
						"properties": {
							"function": {
								"type": "string"
							},
							"result": {
								"oneOf": [
									{
										"type": "object",
										"properties": {
											"type": {
												"type": "string",
												"const": "text",
												"description": "Always `text`"
											},
											"value": {
												"oneOf": [
													{
														"type": "string"
													},
													{
														"type": "null"
													}
												]
											}
										},
										"additionalProperties": false,
										"required": ["type", "value"]
									},
									{
										"type": "object",
										"properties": {
											"type": {
												"type": "string",
												"const": "number",
												"description": "Always `number`"
											},
											"value": {
												"oneOf": [
													{
														"type": "number"
													},
													{
														"type": "null"
													}
												]
											}
										},
										"additionalProperties": false,
										"required": ["type", "value"]
									},
									{
										"type": "object",
										"properties": {
											"type": {
												"type": "string",
												"const": "date",
												"description": "Always `date`"
											},
											"value": {
												"oneOf": [
													{
														"type": "object",
														"properties": {
															"start": {
																"type": "string"
															},
															"end": {
																"type": "string"
															},
															"time_zone": {
																"type": "string"
															}
														},
														"additionalProperties": false,
														"required": ["start"]
													},
													{
														"type": "null"
													}
												]
											}
										},
										"additionalProperties": false,
										"required": ["type", "value"]
									},
									{
										"type": "object",
										"properties": {
											"type": {
												"type": "string",
												"const": "array",
												"description": "Always `array`"
											},
											"values": {
												"type": "array",
												"items": {
													"oneOf": [
														{
															"type": "object",
															"properties": {
																"type": {
																	"type": "string",
																	"const": "text",
																	"description": "Always `text`"
																},
																"value": {
																	"type": "string"
																}
															},
															"additionalProperties": false,
															"required": ["type", "value"]
														},
														{
															"type": "object",
															"properties": {
																"type": {
																	"type": "string",
																	"const": "number",
																	"description": "Always `number`"
																},
																"value": {
																	"type": "number"
																}
															},
															"additionalProperties": false,
															"required": ["type", "value"]
														},
														{
															"type": "object",
															"properties": {
																"type": {
																	"type": "string",
																	"const": "checkbox",
																	"description": "Always `checkbox`"
																},
																"value": {
																	"type": "boolean"
																}
															},
															"additionalProperties": false,
															"required": ["type", "value"]
														},
														{
															"type": "object",
															"properties": {
																"type": {
																	"type": "string",
																	"const": "date",
																	"description": "Always `date`"
																},
																"value": {
																	"type": "object",
																	"properties": {
																		"start": {
																			"type": "string"
																		},
																		"end": {
																			"type": "string"
																		},
																		"time_zone": {
																			"type": "string"
																		}
																	},
																	"additionalProperties": false,
																	"required": ["start"]
																}
															},
															"additionalProperties": false,
															"required": ["type", "value"]
														},
														{
															"type": "object",
															"properties": {
																"type": {
																	"type": "string",
																	"const": "person",
																	"description": "Always `person`"
																},
																"value": {
																	"type": "string"
																}
															},
															"additionalProperties": false,
															"required": ["type", "value"]
														},
														{
															"type": "object",
															"properties": {
																"type": {
																	"type": "string",
																	"const": "page",
																	"description": "Always `page`"
																},
																"value": {
																	"type": "string"
																}
															},
															"additionalProperties": false,
															"required": ["type", "value"]
														},
														{
															"type": "object",
															"properties": {
																"type": {
																	"type": "string",
																	"const": "empty",
																	"description": "Always `empty`"
																},
																"value": {
																	"type": "null"
																}
															},
															"additionalProperties": false,
															"required": ["type", "value"]
														}
													]
												}
											},
											"has_more": {
												"type": "boolean"
											},
											"next_cursor": {
												"type": "string"
											}
										},
										"additionalProperties": false,
										"required": ["type", "values", "has_more"]
									}
								]
							}
						},
						"additionalProperties": false,
						"required": ["function", "result"]
					},
					{
						"type": "object",
						"properties": {
							"items": {
								"type": "array",
								"items": {
									"type": "object",
									"properties": {
										"notification_id": {
											"type": "string"
										},
										"type": {
											"type": "string",
											"enum": [
												"comment",
												"comment-thread",
												"comment-page-group",
												"mention",
												"reminder",
												"reaction",
												"page-invite",
												"workspace-invite",
												"teamspace-invite",
												"group-invite",
												"property-update",
												"page-access-request",
												"workflow-access-request",
												"team-access-request",
												"workspace-access-request",
												"guest-access-request",
												"restricted-member-access-request",
												"expiration-extension-request",
												"fallback"
											],
											"description": "One of: `comment`, `comment-thread`, `comment-page-group`, `mention`, `reminder`, `reaction`, `page-invite`, `workspace-invite`, `teamspace-invite`, `group-invite`, `property-update`, `page-access-request`, `workflow-access-request`, `team-access-request`, `workspace-access-request`, `guest-access-request`, `restricted-member-access-request`, `expiration-extension-request`, `fallback`"
										},
										"read": {
											"type": "boolean"
										},
										"archived": {
											"type": "boolean"
										},
										"end_time": {
											"type": "number",
											"description": "Notification time as a Unix timestamp in milliseconds."
										},
										"verbal_age": {
											"type": "string",
											"description": "Notification age at the time of fetching, always rendered in English."
										},
										"actors": {
											"type": "array",
											"items": {
												"type": "object",
												"properties": {
													"name": {
														"type": "string"
													},
													"actor_type": {
														"type": "string",
														"enum": ["user", "bot"],
														"description": "One of: `user`, `bot`"
													}
												},
												"additionalProperties": false,
												"required": ["name"]
											}
										},
										"title": {
											"type": "string"
										},
										"body": {
											"type": "string"
										},
										"url": {
											"type": "string",
											"description": "URL of the Notion page or discussion the notification targets."
										}
									},
									"additionalProperties": false,
									"required": [
										"notification_id",
										"type",
										"read",
										"archived",
										"end_time",
										"verbal_age",
										"actors",
										"title"
									]
								}
							},
							"has_more": {
								"type": "boolean"
							},
							"next_cursor": {
								"type": "string",
								"description": "Pass this to the next call when has_more is true."
							}
						},
						"additionalProperties": false,
						"required": ["items", "has_more"]
					},
					{
						"$ref": "#/components/schemas/emptyObject"
					},
					{
						"type": "object",
						"properties": {
							"form_url": {
								"type": "string"
							},
							"view_url": {
								"type": "string"
							},
							"database_url": {
								"type": "string"
							},
							"data_source_url": {
								"type": "string"
							},
							"metadata": {
								"type": "object",
								"properties": {
									"view_name": {
										"type": "string"
									},
									"title": {
										"type": "string",
										"description": "The form title."
									},
									"description": {
										"oneOf": [
											{
												"type": "string"
											},
											{
												"type": "null"
											}
										]
									},
									"icon": {
										"oneOf": [
											{
												"type": "string"
											},
											{
												"type": "null"
											}
										]
									},
									"cover": {
										"oneOf": [
											{
												"type": "string"
											},
											{
												"type": "null"
											}
										]
									},
									"cover_position": {
										"oneOf": [
											{
												"type": "number",
												"minimum": 0,
												"maximum": 1
											},
											{
												"type": "null"
											}
										]
									}
								},
								"additionalProperties": false,
								"required": [
									"view_name",
									"title",
									"description",
									"icon",
									"cover",
									"cover_position"
								]
							},
							"settings": {
								"type": "object",
								"properties": {
									"is_form_closed": {
										"type": "boolean",
										"description": "Whether the form is closed to new responses."
									},
									"anonymous_submissions": {
										"type": "boolean",
										"description": "Whether the form accepts anonymous responses."
									},
									"submission_permissions": {
										"type": "string",
										"enum": [
											"none",
											"comment_only",
											"reader",
											"read_and_write",
											"editor"
										],
										"description": "One of: `none`, `comment_only`, `reader`, `read_and_write`, `editor`"
									},
									"form_submission_template": {
										"oneOf": [
											{
												"type": "object",
												"properties": {
													"type": {
														"type": "string",
														"const": "inherit_database_default",
														"description": "Always `inherit_database_default`"
													}
												},
												"additionalProperties": false,
												"required": ["type"]
											},
											{
												"type": "object",
												"properties": {
													"type": {
														"type": "string",
														"const": "empty",
														"description": "Always `empty`"
													}
												},
												"additionalProperties": false,
												"required": ["type"]
											},
											{
												"type": "object",
												"properties": {
													"type": {
														"type": "string",
														"const": "page",
														"description": "Always `page`"
													},
													"page_url": {
														"type": "string",
														"description": "The database template page URL used for submissions."
													}
												},
												"additionalProperties": false,
												"required": ["type", "page_url"]
											}
										],
										"description": "The page template applied to new form responses."
									},
									"custom_submit_button_text": {
										"oneOf": [
											{
												"type": "string"
											},
											{
												"type": "null"
											}
										]
									},
									"custom_submit_button_color": {
										"oneOf": [
											{
												"type": "string",
												"enum": [
													"gray",
													"lightgray",
													"brown",
													"yellow",
													"orange",
													"green",
													"blue",
													"purple",
													"pink",
													"red"
												],
												"description": "One of: `gray`, `lightgray`, `brown`, `yellow`, `orange`, `green`, `blue`, `purple`, `pink`, `red`"
											},
											{
												"type": "null"
											}
										]
									},
									"custom_confirmation_screen_title": {
										"oneOf": [
											{
												"type": "string"
											},
											{
												"type": "null"
											}
										]
									},
									"custom_confirmation_screen_body": {
										"oneOf": [
											{
												"type": "string"
											},
											{
												"type": "null"
											}
										]
									},
									"allow_view_response": {
										"type": "boolean",
										"description": "Whether respondents may view their submitted response."
									},
									"allow_email_response": {
										"type": "boolean",
										"description": "Whether respondents may receive their response by email."
									},
									"allow_submit_another_response": {
										"type": "boolean",
										"description": "Whether respondents may submit another response."
									}
								},
								"additionalProperties": false,
								"required": [
									"is_form_closed",
									"anonymous_submissions",
									"submission_permissions",
									"form_submission_template",
									"custom_submit_button_text",
									"custom_submit_button_color",
									"custom_confirmation_screen_title",
									"custom_confirmation_screen_body",
									"allow_view_response",
									"allow_email_response",
									"allow_submit_another_response"
								]
							},
							"sharing": {
								"type": "object",
								"properties": {
									"is_public": {
										"type": "boolean"
									},
									"hide_notion_branding": {
										"oneOf": [
											{
												"type": "boolean"
											},
											{
												"type": "null"
											}
										]
									},
									"hide_embed_title": {
										"oneOf": [
											{
												"type": "boolean"
											},
											{
												"type": "null"
											}
										]
									}
								},
								"additionalProperties": false,
								"required": [
									"is_public",
									"hide_notion_branding",
									"hide_embed_title"
								]
							},
							"questions": {
								"type": "array",
								"items": {
									"type": "object",
									"properties": {
										"property_url": {
											"type": "string",
											"description": "Property URL."
										},
										"name": {
											"type": "string",
											"description": "Question label."
										},
										"description": {
											"oneOf": [
												{
													"type": "string"
												},
												{
													"type": "null"
												}
											]
										},
										"show_description": {
											"type": "boolean",
											"description": "Show help text."
										},
										"required": {
											"type": "boolean",
											"description": "Required question."
										},
										"sync_name_to_property": {
											"type": "boolean",
											"description": "Sync property name."
										},
										"config": {
											"type": "object",
											"properties": {
												"long_answer": {
													"type": "boolean",
													"description": "Whether a text question accepts a long-form answer."
												},
												"checkbox_label": {
													"oneOf": [
														{
															"type": "string"
														},
														{
															"type": "null"
														}
													]
												},
												"max_selection_count": {
													"oneOf": [
														{
															"type": "integer",
															"minimum": 1
														},
														{
															"type": "null"
														}
													]
												},
												"display_mode": {
													"type": "string",
													"enum": ["list", "dropdown"],
													"description": "One of: `list`, `dropdown`"
												},
												"include_end_date": {
													"type": "boolean",
													"description": "Whether a date answer can include an end date."
												},
												"include_time": {
													"type": "boolean",
													"description": "Whether a date answer includes a time."
												}
											},
											"additionalProperties": false,
											"description": "Type settings."
										},
										"property_name": {
											"type": "string"
										},
										"property_type": {
											"type": "string",
											"enum": [
												"title",
												"text",
												"select",
												"multi_select",
												"relation",
												"date",
												"person",
												"file",
												"number",
												"checkbox",
												"email",
												"url",
												"phone_number",
												"place"
											],
											"description": "One of: `title`, `text`, `select`, `multi_select`, `relation`, `date`, `person`, `file`, `number`, `checkbox`, `email`, `url`, `phone_number`, `place`"
										},
										"conditional_groups": {
											"type": "array",
											"items": {
												"type": "object",
												"properties": {
													"when": {
														"oneOf": [
															{
																"type": "object",
																"properties": {
																	"type": {
																		"type": "string",
																		"const": "checkbox",
																		"description": "Always `checkbox`"
																	},
																	"checked": {
																		"type": "boolean",
																		"description": "The checkbox value that activates this group."
																	}
																},
																"additionalProperties": false,
																"required": ["type", "checked"]
															},
															{
																"type": "object",
																"properties": {
																	"type": {
																		"type": "string",
																		"const": "select",
																		"description": "Always `select`"
																	},
																	"option_urls": {
																		"type": "array",
																		"items": {
																			"type": "string"
																		},
																		"minItems": 1,
																		"uniqueItems": true,
																		"description": "Option URLs that activate this conditional group."
																	}
																},
																"additionalProperties": false,
																"required": ["type", "option_urls"]
															},
															{
																"type": "object",
																"properties": {
																	"type": {
																		"type": "string",
																		"const": "multi_select",
																		"description": "Always `multi_select`"
																	},
																	"match": {
																		"type": "string",
																		"enum": ["any", "all"],
																		"description": "One of: `any`, `all`"
																	},
																	"option_urls": {
																		"type": "array",
																		"items": {
																			"type": "string"
																		},
																		"minItems": 1,
																		"uniqueItems": true,
																		"description": "Option URLs matched by this conditional group."
																	}
																},
																"additionalProperties": false,
																"required": ["type", "match", "option_urls"]
															}
														]
													},
													"questions": {
														"type": "array",
														"items": {
															"type": "object",
															"properties": {
																"property_url": {
																	"type": "string",
																	"description": "Property URL."
																},
																"name": {
																	"type": "string",
																	"description": "Question label."
																},
																"description": {
																	"oneOf": [
																		{
																			"type": "string"
																		},
																		{
																			"type": "null"
																		}
																	]
																},
																"show_description": {
																	"type": "boolean",
																	"description": "Show help text."
																},
																"required": {
																	"type": "boolean",
																	"description": "Required question."
																},
																"sync_name_to_property": {
																	"type": "boolean",
																	"description": "Sync property name."
																},
																"config": {
																	"type": "object",
																	"properties": {
																		"long_answer": {
																			"type": "boolean",
																			"description": "Whether a text question accepts a long-form answer."
																		},
																		"checkbox_label": {
																			"oneOf": [
																				{
																					"type": "string"
																				},
																				{
																					"type": "null"
																				}
																			]
																		},
																		"max_selection_count": {
																			"oneOf": [
																				{
																					"type": "integer",
																					"minimum": 1
																				},
																				{
																					"type": "null"
																				}
																			]
																		},
																		"display_mode": {
																			"type": "string",
																			"enum": ["list", "dropdown"],
																			"description": "One of: `list`, `dropdown`"
																		},
																		"include_end_date": {
																			"type": "boolean",
																			"description": "Whether a date answer can include an end date."
																		},
																		"include_time": {
																			"type": "boolean",
																			"description": "Whether a date answer includes a time."
																		}
																	},
																	"additionalProperties": false,
																	"description": "Type settings."
																},
																"property_name": {
																	"type": "string"
																},
																"property_type": {
																	"type": "string",
																	"enum": [
																		"title",
																		"text",
																		"select",
																		"multi_select",
																		"relation",
																		"date",
																		"person",
																		"file",
																		"number",
																		"checkbox",
																		"email",
																		"url",
																		"phone_number",
																		"place"
																	],
																	"description": "One of: `title`, `text`, `select`, `multi_select`, `relation`, `date`, `person`, `file`, `number`, `checkbox`, `email`, `url`, `phone_number`, `place`"
																},
																"conditional_groups": {
																	"type": "array",
																	"items": {
																		"type": "object",
																		"properties": {
																			"when": {
																				"oneOf": [
																					{
																						"type": "object",
																						"properties": {
																							"type": {
																								"type": "string",
																								"const": "checkbox",
																								"description": "Always `checkbox`"
																							},
																							"checked": {
																								"type": "boolean",
																								"description": "The checkbox value that activates this group."
																							}
																						},
																						"additionalProperties": false,
																						"required": ["type", "checked"]
																					},
																					{
																						"type": "object",
																						"properties": {
																							"type": {
																								"type": "string",
																								"const": "select",
																								"description": "Always `select`"
																							},
																							"option_urls": {
																								"type": "array",
																								"items": {
																									"type": "string"
																								},
																								"minItems": 1,
																								"uniqueItems": true,
																								"description": "Option URLs that activate this conditional group."
																							}
																						},
																						"additionalProperties": false,
																						"required": ["type", "option_urls"]
																					},
																					{
																						"type": "object",
																						"properties": {
																							"type": {
																								"type": "string",
																								"const": "multi_select",
																								"description": "Always `multi_select`"
																							},
																							"match": {
																								"type": "string",
																								"enum": ["any", "all"],
																								"description": "One of: `any`, `all`"
																							},
																							"option_urls": {
																								"type": "array",
																								"items": {
																									"type": "string"
																								},
																								"minItems": 1,
																								"uniqueItems": true,
																								"description": "Option URLs matched by this conditional group."
																							}
																						},
																						"additionalProperties": false,
																						"required": [
																							"type",
																							"match",
																							"option_urls"
																						]
																					}
																				]
																			},
																			"questions": {
																				"type": "array",
																				"items": {
																					"type": "object",
																					"properties": {
																						"property_url": {
																							"type": "string",
																							"description": "Property URL."
																						},
																						"name": {
																							"type": "string",
																							"description": "Question label."
																						},
																						"description": {
																							"oneOf": [
																								{
																									"type": "string"
																								},
																								{
																									"type": "null"
																								}
																							]
																						},
																						"show_description": {
																							"type": "boolean",
																							"description": "Show help text."
																						},
																						"required": {
																							"type": "boolean",
																							"description": "Required question."
																						},
																						"sync_name_to_property": {
																							"type": "boolean",
																							"description": "Sync property name."
																						},
																						"config": {
																							"type": "object",
																							"properties": {
																								"long_answer": {
																									"type": "boolean",
																									"description": "Whether a text question accepts a long-form answer."
																								},
																								"checkbox_label": {
																									"oneOf": [
																										{
																											"type": "string"
																										},
																										{
																											"type": "null"
																										}
																									]
																								},
																								"max_selection_count": {
																									"oneOf": [
																										{
																											"type": "integer",
																											"minimum": 1
																										},
																										{
																											"type": "null"
																										}
																									]
																								},
																								"display_mode": {
																									"type": "string",
																									"enum": ["list", "dropdown"],
																									"description": "One of: `list`, `dropdown`"
																								},
																								"include_end_date": {
																									"type": "boolean",
																									"description": "Whether a date answer can include an end date."
																								},
																								"include_time": {
																									"type": "boolean",
																									"description": "Whether a date answer includes a time."
																								}
																							},
																							"additionalProperties": false,
																							"description": "Type settings."
																						},
																						"property_name": {
																							"type": "string"
																						},
																						"property_type": {
																							"type": "string",
																							"enum": [
																								"title",
																								"text",
																								"select",
																								"multi_select",
																								"relation",
																								"date",
																								"person",
																								"file",
																								"number",
																								"checkbox",
																								"email",
																								"url",
																								"phone_number",
																								"place"
																							],
																							"description": "One of: `title`, `text`, `select`, `multi_select`, `relation`, `date`, `person`, `file`, `number`, `checkbox`, `email`, `url`, `phone_number`, `place`"
																						},
																						"conditional_groups": {
																							"type": "array",
																							"items": {
																								"type": "object",
																								"additionalProperties": false
																							},
																							"maxItems": 0
																						}
																					},
																					"additionalProperties": false,
																					"required": [
																						"property_url",
																						"name",
																						"description",
																						"show_description",
																						"required",
																						"sync_name_to_property",
																						"config",
																						"property_name",
																						"property_type",
																						"conditional_groups"
																					]
																				},
																				"minItems": 1
																			}
																		},
																		"additionalProperties": false,
																		"required": ["when", "questions"]
																	}
																}
															},
															"additionalProperties": false,
															"required": [
																"property_url",
																"name",
																"description",
																"show_description",
																"required",
																"sync_name_to_property",
																"config",
																"property_name",
																"property_type",
																"conditional_groups"
															]
														},
														"minItems": 1
													}
												},
												"additionalProperties": false,
												"required": ["when", "questions"]
											}
										}
									},
									"additionalProperties": false,
									"required": [
										"property_url",
										"name",
										"description",
										"show_description",
										"required",
										"sync_name_to_property",
										"config",
										"property_name",
										"property_type",
										"conditional_groups"
									]
								}
							}
						},
						"additionalProperties": false,
						"required": [
							"form_url",
							"view_url",
							"database_url",
							"data_source_url",
							"metadata",
							"settings",
							"sharing",
							"questions"
						]
					},
					{
						"type": "object",
						"properties": {
							"workspace": {
								"type": "object",
								"properties": {
									"id": {
										"type": "string"
									},
									"name": {
										"type": "string"
									}
								},
								"additionalProperties": false,
								"required": ["id", "name"]
							},
							"user": {
								"type": "object",
								"properties": {
									"type": {
										"type": "string",
										"enum": ["person", "bot"],
										"description": "One of: `person`, `bot`"
									},
									"id": {
										"type": "string"
									},
									"name": {
										"type": "string"
									},
									"email": {
										"type": "string"
									}
								},
								"additionalProperties": false,
								"required": ["type", "id", "name"]
							}
						},
						"additionalProperties": false,
						"required": ["workspace", "user"]
					},
					{
						"type": "object",
						"required": [
							"object",
							"id",
							"status",
							"status_url",
							"created_time",
							"operation",
							"poll_after_seconds"
						],
						"additionalProperties": false,
						"properties": {
							"object": {
								"type": "string",
								"const": "async_task"
							},
							"id": {
								"type": "string",
								"minLength": 1
							},
							"status_url": {
								"type": "string",
								"minLength": 1
							},
							"created_time": {
								"type": "string",
								"format": "date-time"
							},
							"operation": {
								"type": "object",
								"required": ["surface", "name"],
								"additionalProperties": false,
								"properties": {
									"surface": {
										"type": "string",
										"enum": ["rest", "mcp"]
									},
									"name": {
										"type": "string",
										"minLength": 1
									}
								}
							},
							"status": {
								"type": "string",
								"enum": ["queued", "running", "retrying"]
							},
							"poll_after_seconds": {
								"type": "integer",
								"minimum": 0
							}
						}
					},
					{
						"type": "object",
						"required": [
							"object",
							"id",
							"status",
							"status_url",
							"created_time",
							"operation",
							"result"
						],
						"additionalProperties": false,
						"properties": {
							"object": {
								"type": "string",
								"const": "async_task"
							},
							"id": {
								"type": "string",
								"minLength": 1
							},
							"status_url": {
								"type": "string",
								"minLength": 1
							},
							"created_time": {
								"type": "string",
								"format": "date-time"
							},
							"operation": {
								"type": "object",
								"required": ["surface", "name"],
								"additionalProperties": false,
								"properties": {
									"surface": {
										"type": "string",
										"enum": ["rest", "mcp"]
									},
									"name": {
										"type": "string",
										"minLength": 1
									}
								}
							},
							"status": {
								"type": "string",
								"const": "succeeded"
							},
							"result": {
								"type": "object"
							}
						}
					},
					{
						"type": "object",
						"required": [
							"object",
							"id",
							"status",
							"status_url",
							"created_time",
							"operation",
							"error"
						],
						"additionalProperties": false,
						"properties": {
							"object": {
								"type": "string",
								"const": "async_task"
							},
							"id": {
								"type": "string",
								"minLength": 1
							},
							"status_url": {
								"type": "string",
								"minLength": 1
							},
							"created_time": {
								"type": "string",
								"format": "date-time"
							},
							"operation": {
								"type": "object",
								"required": ["surface", "name"],
								"additionalProperties": false,
								"properties": {
									"surface": {
										"type": "string",
										"enum": ["rest", "mcp"]
									},
									"name": {
										"type": "string",
										"minLength": 1
									}
								}
							},
							"status": {
								"type": "string",
								"const": "failed"
							},
							"error": {
								"oneOf": [
									{
										"type": "object",
										"required": ["object", "status", "code", "message"],
										"additionalProperties": false,
										"properties": {
											"object": {
												"type": "string",
												"const": "error"
											},
											"status": {
												"type": "integer",
												"const": 400
											},
											"code": {
												"type": "string",
												"const": "invalid_json"
											},
											"message": {
												"type": "string",
												"minLength": 1
											},
											"additional_data": {
												"type": "object",
												"additionalProperties": {
													"oneOf": [
														{
															"type": "string"
														},
														{
															"type": "array",
															"items": {
																"type": "string"
															}
														}
													]
												}
											}
										}
									},
									{
										"type": "object",
										"required": ["object", "status", "code", "message"],
										"additionalProperties": false,
										"properties": {
											"object": {
												"type": "string",
												"const": "error"
											},
											"status": {
												"type": "integer",
												"const": 400
											},
											"code": {
												"type": "string",
												"const": "invalid_request_url"
											},
											"message": {
												"type": "string",
												"minLength": 1
											},
											"additional_data": {
												"type": "object",
												"additionalProperties": {
													"oneOf": [
														{
															"type": "string"
														},
														{
															"type": "array",
															"items": {
																"type": "string"
															}
														}
													]
												}
											}
										}
									},
									{
										"type": "object",
										"required": ["object", "status", "code", "message"],
										"additionalProperties": false,
										"properties": {
											"object": {
												"type": "string",
												"const": "error"
											},
											"status": {
												"type": "integer",
												"const": 400
											},
											"code": {
												"type": "string",
												"const": "invalid_request"
											},
											"message": {
												"type": "string",
												"minLength": 1
											},
											"additional_data": {
												"type": "object",
												"additionalProperties": {
													"oneOf": [
														{
															"type": "string"
														},
														{
															"type": "array",
															"items": {
																"type": "string"
															}
														}
													]
												}
											}
										}
									},
									{
										"type": "object",
										"required": ["object", "status", "code", "message"],
										"additionalProperties": false,
										"properties": {
											"object": {
												"type": "string",
												"const": "error"
											},
											"status": {
												"type": "integer",
												"const": 400
											},
											"code": {
												"type": "string",
												"const": "missing_version"
											},
											"message": {
												"type": "string",
												"minLength": 1
											},
											"additional_data": {
												"type": "object",
												"additionalProperties": {
													"oneOf": [
														{
															"type": "string"
														},
														{
															"type": "array",
															"items": {
																"type": "string"
															}
														}
													]
												}
											}
										}
									},
									{
										"type": "object",
										"required": ["object", "status", "code", "message"],
										"additionalProperties": false,
										"properties": {
											"object": {
												"type": "string",
												"const": "error"
											},
											"status": {
												"type": "integer",
												"const": 400
											},
											"code": {
												"type": "string",
												"const": "invalid_beta"
											},
											"message": {
												"type": "string",
												"minLength": 1
											},
											"additional_data": {
												"type": "object",
												"additionalProperties": {
													"oneOf": [
														{
															"type": "string"
														},
														{
															"type": "array",
															"items": {
																"type": "string"
															}
														}
													]
												}
											}
										}
									},
									{
										"type": "object",
										"required": ["object", "status", "code", "message"],
										"additionalProperties": false,
										"properties": {
											"object": {
												"type": "string",
												"const": "error"
											},
											"status": {
												"type": "integer",
												"const": 400
											},
											"code": {
												"type": "string",
												"const": "validation_error"
											},
											"message": {
												"type": "string",
												"minLength": 1
											},
											"additional_data": {
												"type": "object",
												"additionalProperties": {
													"oneOf": [
														{
															"type": "string"
														},
														{
															"type": "array",
															"items": {
																"type": "string"
															}
														}
													]
												}
											}
										}
									},
									{
										"type": "object",
										"required": ["object", "status", "code", "message"],
										"additionalProperties": false,
										"properties": {
											"object": {
												"type": "string",
												"const": "error"
											},
											"status": {
												"type": "integer",
												"const": 401
											},
											"code": {
												"type": "string",
												"const": "unauthorized"
											},
											"message": {
												"type": "string",
												"minLength": 1
											},
											"additional_data": {
												"type": "object",
												"additionalProperties": {
													"oneOf": [
														{
															"type": "string"
														},
														{
															"type": "array",
															"items": {
																"type": "string"
															}
														}
													]
												}
											}
										}
									},
									{
										"type": "object",
										"required": ["object", "status", "code", "message"],
										"additionalProperties": false,
										"properties": {
											"object": {
												"type": "string",
												"const": "error"
											},
											"status": {
												"type": "integer",
												"const": 403
											},
											"code": {
												"type": "string",
												"const": "restricted_resource"
											},
											"message": {
												"type": "string",
												"minLength": 1
											},
											"additional_data": {
												"type": "object",
												"additionalProperties": {
													"oneOf": [
														{
															"type": "string"
														},
														{
															"type": "array",
															"items": {
																"type": "string"
															}
														}
													]
												}
											}
										}
									},
									{
										"type": "object",
										"required": ["object", "status", "code", "message"],
										"additionalProperties": false,
										"properties": {
											"object": {
												"type": "string",
												"const": "error"
											},
											"status": {
												"type": "integer",
												"const": 404
											},
											"code": {
												"type": "string",
												"const": "object_not_found"
											},
											"message": {
												"type": "string",
												"minLength": 1
											},
											"additional_data": {
												"type": "object",
												"additionalProperties": {
													"oneOf": [
														{
															"type": "string"
														},
														{
															"type": "array",
															"items": {
																"type": "string"
															}
														}
													]
												}
											}
										}
									},
									{
										"type": "object",
										"required": ["object", "status", "code", "message"],
										"additionalProperties": false,
										"properties": {
											"object": {
												"type": "string",
												"const": "error"
											},
											"status": {
												"type": "integer",
												"const": 404
											},
											"code": {
												"type": "string",
												"const": "directory_not_found"
											},
											"message": {
												"type": "string",
												"minLength": 1
											},
											"additional_data": {
												"type": "object",
												"additionalProperties": {
													"oneOf": [
														{
															"type": "string"
														},
														{
															"type": "array",
															"items": {
																"type": "string"
															}
														}
													]
												}
											}
										}
									},
									{
										"type": "object",
										"required": ["object", "status", "code", "message"],
										"additionalProperties": false,
										"properties": {
											"object": {
												"type": "string",
												"const": "error"
											},
											"status": {
												"type": "integer",
												"const": 429
											},
											"code": {
												"type": "string",
												"const": "rate_limited"
											},
											"message": {
												"type": "string",
												"minLength": 1
											},
											"additional_data": {
												"type": "object",
												"additionalProperties": {
													"oneOf": [
														{
															"type": "string"
														},
														{
															"type": "array",
															"items": {
																"type": "string"
															}
														}
													]
												}
											}
										}
									},
									{
										"type": "object",
										"required": ["object", "status", "code", "message"],
										"additionalProperties": false,
										"properties": {
											"object": {
												"type": "string",
												"const": "error"
											},
											"status": {
												"type": "integer",
												"const": 529
											},
											"code": {
												"type": "string",
												"const": "service_overload"
											},
											"message": {
												"type": "string",
												"minLength": 1
											},
											"additional_data": {
												"type": "object",
												"additionalProperties": {
													"oneOf": [
														{
															"type": "string"
														},
														{
															"type": "array",
															"items": {
																"type": "string"
															}
														}
													]
												}
											}
										}
									},
									{
										"type": "object",
										"required": ["object", "status", "code", "message"],
										"additionalProperties": false,
										"properties": {
											"object": {
												"type": "string",
												"const": "error"
											},
											"status": {
												"type": "integer",
												"const": 500
											},
											"code": {
												"type": "string",
												"const": "internal_server_error"
											},
											"message": {
												"type": "string",
												"minLength": 1
											},
											"additional_data": {
												"type": "object",
												"additionalProperties": {
													"oneOf": [
														{
															"type": "string"
														},
														{
															"type": "array",
															"items": {
																"type": "string"
															}
														}
													]
												}
											}
										}
									},
									{
										"type": "object",
										"required": ["object", "status", "code", "message"],
										"additionalProperties": false,
										"properties": {
											"object": {
												"type": "string",
												"const": "error"
											},
											"status": {
												"type": "integer",
												"const": 503
											},
											"code": {
												"type": "string",
												"const": "service_unavailable"
											},
											"message": {
												"type": "string",
												"minLength": 1
											},
											"additional_data": {
												"type": "object",
												"additionalProperties": {
													"oneOf": [
														{
															"type": "string"
														},
														{
															"type": "array",
															"items": {
																"type": "string"
															}
														}
													]
												}
											}
										}
									},
									{
										"type": "object",
										"required": ["object", "status", "code", "message"],
										"additionalProperties": false,
										"properties": {
											"object": {
												"type": "string",
												"const": "error"
											},
											"status": {
												"type": "integer",
												"const": 504
											},
											"code": {
												"type": "string",
												"const": "gateway_timeout"
											},
											"message": {
												"type": "string",
												"minLength": 1
											},
											"additional_data": {
												"type": "object",
												"additionalProperties": {
													"oneOf": [
														{
															"type": "string"
														},
														{
															"type": "array",
															"items": {
																"type": "string"
															}
														}
													]
												}
											}
										}
									},
									{
										"type": "object",
										"required": ["object", "status", "code", "message"],
										"additionalProperties": false,
										"properties": {
											"object": {
												"type": "string",
												"const": "error"
											},
											"status": {
												"type": "integer",
												"const": 409
											},
											"code": {
												"type": "string",
												"const": "conflict_error"
											},
											"message": {
												"type": "string",
												"minLength": 1
											},
											"additional_data": {
												"type": "object",
												"additionalProperties": {
													"oneOf": [
														{
															"type": "string"
														},
														{
															"type": "array",
															"items": {
																"type": "string"
															}
														}
													]
												}
											}
										}
									},
									{
										"type": "object",
										"required": ["object", "status", "code", "message"],
										"additionalProperties": false,
										"properties": {
											"object": {
												"type": "string",
												"const": "error"
											},
											"status": {
												"type": "integer",
												"const": 409
											},
											"code": {
												"type": "string",
												"const": "idempotency_key_reused"
											},
											"message": {
												"type": "string",
												"minLength": 1
											},
											"additional_data": {
												"type": "object",
												"additionalProperties": {
													"oneOf": [
														{
															"type": "string"
														},
														{
															"type": "array",
															"items": {
																"type": "string"
															}
														}
													]
												}
											}
										}
									},
									{
										"type": "object",
										"required": ["object", "status", "code", "message"],
										"additionalProperties": false,
										"properties": {
											"object": {
												"type": "string",
												"const": "error"
											},
											"status": {
												"type": "integer",
												"const": 406
											},
											"code": {
												"type": "string",
												"const": "row_limit_exceeded"
											},
											"message": {
												"type": "string",
												"minLength": 1
											},
											"additional_data": {
												"type": "object",
												"additionalProperties": {
													"oneOf": [
														{
															"type": "string"
														},
														{
															"type": "array",
															"items": {
																"type": "string"
															}
														}
													]
												}
											}
										}
									},
									{
										"type": "object",
										"required": ["object", "status", "code", "message"],
										"additionalProperties": false,
										"properties": {
											"object": {
												"type": "string",
												"const": "error"
											},
											"status": {
												"type": "integer",
												"const": 403
											},
											"code": {
												"type": "string",
												"const": "status_change_not_allowed"
											},
											"message": {
												"type": "string",
												"minLength": 1
											},
											"additional_data": {
												"type": "object",
												"additionalProperties": {
													"oneOf": [
														{
															"type": "string"
														},
														{
															"type": "array",
															"items": {
																"type": "string"
															}
														}
													]
												}
											}
										}
									},
									{
										"type": "object",
										"required": ["object", "status", "code", "message"],
										"additionalProperties": false,
										"properties": {
											"object": {
												"type": "string",
												"const": "error"
											},
											"status": {
												"type": "integer",
												"const": 409
											},
											"code": {
												"type": "string",
												"const": "agent_deleted"
											},
											"message": {
												"type": "string",
												"minLength": 1
											},
											"additional_data": {
												"type": "object",
												"additionalProperties": {
													"oneOf": [
														{
															"type": "string"
														},
														{
															"type": "array",
															"items": {
																"type": "string"
															}
														}
													]
												}
											}
										}
									},
									{
										"type": "object",
										"required": ["object", "status", "code", "message"],
										"additionalProperties": false,
										"properties": {
											"object": {
												"type": "string",
												"const": "error"
											},
											"status": {
												"type": "integer",
												"const": 400
											},
											"code": {
												"type": "string",
												"const": "invalid_credit_limit"
											},
											"message": {
												"type": "string",
												"minLength": 1
											},
											"additional_data": {
												"type": "object",
												"additionalProperties": {
													"oneOf": [
														{
															"type": "string"
														},
														{
															"type": "array",
															"items": {
																"type": "string"
															}
														}
													]
												}
											}
										}
									},
									{
										"type": "object",
										"required": ["object", "status", "code", "message"],
										"additionalProperties": false,
										"properties": {
											"object": {
												"type": "string",
												"const": "error"
											},
											"status": {
												"type": "integer",
												"const": 403
											},
											"code": {
												"type": "string",
												"const": "workspace_credits_exhausted"
											},
											"message": {
												"type": "string",
												"minLength": 1
											},
											"additional_data": {
												"type": "object",
												"additionalProperties": {
													"oneOf": [
														{
															"type": "string"
														},
														{
															"type": "array",
															"items": {
																"type": "string"
															}
														}
													]
												}
											}
										}
									},
									{
										"type": "object",
										"required": ["object", "status", "code", "message"],
										"additionalProperties": false,
										"properties": {
											"object": {
												"type": "string",
												"const": "error"
											},
											"status": {
												"type": "integer",
												"const": 403
											},
											"code": {
												"type": "string",
												"const": "agent_credit_limit_reached"
											},
											"message": {
												"type": "string",
												"minLength": 1
											},
											"additional_data": {
												"type": "object",
												"additionalProperties": {
													"oneOf": [
														{
															"type": "string"
														},
														{
															"type": "array",
															"items": {
																"type": "string"
															}
														}
													]
												}
											}
										}
									}
								]
							}
						}
					},
					{
						"type": "object",
						"properties": {
							"joinedTeams": {
								"type": "array",
								"items": {
									"type": "object",
									"properties": {
										"type": {
											"type": "string",
											"const": "team",
											"description": "The type of the result."
										},
										"id": {
											"$ref": "#/components/schemas/idResponse",
											"description": "The unique identifier of the team."
										},
										"name": {
											"type": "string",
											"description": "The display name of the team."
										},
										"in_trash": {
											"type": "boolean",
											"description": "Whether the team is in the trash."
										},
										"role": {
											"type": "string",
											"enum": ["owner", "member", "guest", "none"],
											"description": "The authenticated user's role in this team: 'owner' (full admin access), 'member' (content access), 'guest' (limited access), or 'none' (no access)."
										}
									},
									"additionalProperties": false,
									"required": ["type", "id", "name", "in_trash", "role"]
								},
								"maxItems": 100,
								"description": "Teams that the authenticated user is a member of."
							},
							"otherTeams": {
								"type": "array",
								"items": {
									"type": "object",
									"properties": {
										"type": {
											"type": "string",
											"const": "team",
											"description": "The type of the result."
										},
										"id": {
											"$ref": "#/components/schemas/idResponse",
											"description": "The unique identifier of the team."
										},
										"name": {
											"type": "string",
											"description": "The display name of the team."
										},
										"in_trash": {
											"type": "boolean",
											"description": "Whether the team is in the trash."
										},
										"role": {
											"type": "string",
											"enum": ["owner", "member", "guest", "none"],
											"description": "The authenticated user's role in this team: 'owner' (full admin access), 'member' (content access), 'guest' (limited access), or 'none' (no access)."
										}
									},
									"additionalProperties": false,
									"required": ["type", "id", "name", "in_trash", "role"]
								},
								"maxItems": 100,
								"description": "Teams that the authenticated user is not a member of but can see."
							},
							"hasMore": {
								"type": "boolean",
								"description": "Whether there are more teams that were not included due to the result limit."
							}
						},
						"additionalProperties": false,
						"required": ["joinedTeams", "otherTeams", "hasMore"]
					},
					{
						"type": "object",
						"properties": {
							"results": {
								"type": "array",
								"items": {
									"type": "object",
									"properties": {
										"object": {
											"type": "string",
											"const": "group",
											"description": "Always `group`"
										},
										"id": {
											"type": "string",
											"description": "The ID of the group."
										},
										"name": {
											"type": "string",
											"description": "The name of the group."
										}
									},
									"additionalProperties": false,
									"required": ["object", "id", "name"]
								},
								"maxItems": 25,
								"description": "Visible permission groups: sorted by name for listings, closest matches first for searches."
							},
							"hasMore": {
								"type": "boolean",
								"description": "Whether more visible groups matched than the returned fixed limit."
							}
						},
						"additionalProperties": false,
						"required": ["results", "hasMore"]
					},
					{
						"type": "object",
						"properties": {
							"results": {
								"type": "array",
								"items": {
									"type": "object",
									"properties": {
										"type": {
											"type": "string",
											"enum": ["person", "bot"],
											"description": "The type of user: 'person' or 'bot'."
										},
										"id": {
											"type": "string",
											"description": "The unique identifier of the user."
										},
										"name": {
											"type": "string",
											"description": "The display name of the user."
										},
										"email": {
											"type": "string",
											"description": "The email address of the user (only for person types)."
										}
									},
									"additionalProperties": false,
									"required": ["type", "id", "name"]
								},
								"maxItems": 100,
								"description": "List of users (both workspace members and guests) and bots in the current page."
							},
							"has_more": {
								"type": "boolean",
								"description": "Whether there are more users available in the next page."
							},
							"next_cursor": {
								"type": "string",
								"description": "Cursor for the next page of results. Use this value as start_cursor in the next request to get the next page."
							}
						},
						"additionalProperties": false,
						"required": ["results", "has_more"]
					},
					{
						"type": "object",
						"properties": {
							"agents": {
								"type": "array",
								"items": {
									"type": "object",
									"properties": {
										"type": {
											"type": "string",
											"const": "agent",
											"description": "The type of the result."
										},
										"id": {
											"$ref": "#/components/schemas/idResponse",
											"description": "The unique identifier of the agent."
										},
										"name": {
											"type": "string",
											"description": "The display name of the agent."
										},
										"description": {
											"type": "string",
											"description": "A short description of what the agent does."
										},
										"instructions": {
											"type": "string",
											"description": "The system instructions that define how the agent behaves."
										}
									},
									"additionalProperties": false,
									"required": ["type", "id", "name"]
								},
								"maxItems": 100,
								"description": "List of available custom agents."
							},
							"has_more": {
								"type": "boolean",
								"description": "Whether there are more agents available in the next page."
							},
							"next_cursor": {
								"type": "string",
								"description": "Cursor for the next page of results. Use this value as start_cursor in the next request to get the next page."
							}
						},
						"additionalProperties": false,
						"required": ["agents", "has_more"]
					},
					{
						"type": "object",
						"properties": {
							"results": {
								"type": "array",
								"items": {
									"type": "object",
									"properties": {
										"url": {
											"type": "string",
											"description": "Custom Agent URL accepted by spawn_session."
										},
										"name": {
											"type": "string"
										},
										"description": {
											"type": "string"
										},
										"icon": {
											"type": "string"
										}
									},
									"additionalProperties": false,
									"required": ["url", "name"]
								},
								"description": "Agents found in this page. A bounded workspace scan can return an empty page with a nextCursor."
							},
							"nextCursor": {
								"type": "string",
								"description": "Pass this cursor into the next request. Keep following it until it is omitted, even when results is empty."
							}
						},
						"additionalProperties": false,
						"required": ["results"]
					},
					{
						"type": "object",
						"properties": {
							"matches": {
								"type": "array",
								"items": {
									"type": "object",
									"properties": {
										"sessionUrl": {
											"type": "string",
											"description": "The session URL for this match."
										},
										"snippet": {
											"type": "string",
											"maxLength": 300,
											"description": "The session excerpt that matched the question."
										},
										"title": {
											"type": "string",
											"maxLength": 150,
											"description": "The session's display title."
										},
										"createdTime": {
											"type": "string",
											"description": "When the session was created, as an ISO timestamp."
										},
										"lastEdited": {
											"type": "string",
											"description": "When the session was last active."
										}
									},
									"required": ["sessionUrl", "snippet"]
								},
								"maxItems": 20,
								"description": "Sessions matching the question, most relevant first."
							},
							"warning": {
								"type": "string",
								"description": "An actionable status when session search is temporarily unavailable."
							}
						},
						"required": ["matches"]
					},
					{
						"type": "object",
						"properties": {
							"object": {
								"type": "string",
								"const": "list",
								"description": "Always `list`"
							},
							"type": {
								"type": "string",
								"const": "session",
								"description": "Always `session`"
							},
							"session": {
								"type": "object",
								"properties": {},
								"additionalProperties": false
							},
							"results": {
								"type": "array",
								"items": {
									"type": "object",
									"properties": {
										"object": {
											"type": "string",
											"const": "session",
											"description": "Always `session`"
										},
										"id": {
											"type": "string"
										},
										"agent_id": {
											"type": "string"
										},
										"title": {
											"type": "string"
										},
										"status": {
											"type": "string",
											"enum": [
												"queued",
												"in_progress",
												"requires_action",
												"completed",
												"failed",
												"canceled",
												"terminated"
											],
											"description": "One of: `queued`, `in_progress`, `requires_action`, `completed`, `failed`, `canceled`, `terminated`"
										},
										"created_by": {
											"type": "object",
											"properties": {
												"id": {
													"type": "string"
												},
												"type": {
													"type": "string",
													"enum": ["user", "bot"],
													"description": "One of: `user`, `bot`"
												}
											},
											"additionalProperties": false,
											"required": ["id", "type"]
										},
										"agent_version": {
											"oneOf": [
												{
													"type": "object",
													"properties": {
														"id": {
															"type": "string"
														},
														"number": {
															"type": "integer",
															"minimum": 1
														},
														"published_at": {
															"type": "string",
															"format": "date-time"
														}
													},
													"additionalProperties": false,
													"required": ["id", "number", "published_at"]
												},
												{
													"type": "null"
												}
											]
										},
										"models": {
											"oneOf": [
												{
													"type": "object",
													"properties": {
														"type": {
															"type": "string",
															"const": "auto",
															"description": "Always `auto`"
														}
													},
													"additionalProperties": false,
													"required": ["type"]
												},
												{
													"type": "object",
													"properties": {
														"type": {
															"type": "string",
															"const": "pinned",
															"description": "Always `pinned`"
														},
														"ids": {
															"type": "array",
															"items": {
																"oneOf": [
																	{
																		"type": "string"
																	},
																	{
																		"type": "null"
																	}
																]
															}
														}
													},
													"additionalProperties": false,
													"required": ["type", "ids"]
												}
											]
										},
										"created_at": {
											"type": "string",
											"format": "date-time"
										},
										"updated_at": {
											"type": "string",
											"format": "date-time"
										},
										"required_actions": {
											"type": "array",
											"items": {
												"type": "object",
												"properties": {
													"action_id": {
														"type": "string"
													},
													"title": {
														"type": "string"
													},
													"options": {
														"type": "array",
														"items": {
															"type": "object",
															"properties": {
																"id": {
																	"type": "string",
																	"enum": ["approve", "reject"],
																	"description": "One of: `approve`, `reject`"
																},
																"label": {
																	"type": "string"
																}
															},
															"additionalProperties": false,
															"required": ["id", "label"]
														},
														"maxItems": 100
													}
												},
												"additionalProperties": false,
												"required": ["action_id", "title", "options"]
											}
										},
										"error": {
											"type": "object",
											"properties": {
												"code": {
													"type": "string"
												},
												"message": {
													"type": "string"
												},
												"retryable": {
													"type": "boolean"
												}
											},
											"additionalProperties": false,
											"required": ["code", "message", "retryable"]
										},
										"trigger_type": {
											"type": "string"
										},
										"type_labels": {
											"oneOf": [
												{
													"type": "array",
													"items": {
														"type": "string"
													}
												},
												{
													"type": "null"
												}
											]
										},
										"chat_user_emails": {
											"oneOf": [
												{
													"type": "array",
													"items": {
														"type": "string"
													}
												},
												{
													"type": "null"
												}
											]
										},
										"tool_types": {
											"oneOf": [
												{
													"type": "array",
													"items": {
														"type": "string"
													}
												},
												{
													"type": "null"
												}
											]
										},
										"tool_call_count": {
											"oneOf": [
												{
													"type": "integer",
													"minimum": 0
												},
												{
													"type": "null"
												}
											]
										},
										"credits_used": {
											"oneOf": [
												{
													"type": "number",
													"minimum": 0
												},
												{
													"type": "null"
												}
											],
											"description": "Premium AI credits this session consumed. Reported with at most two decimal places, rounded down."
										},
										"runs_completed": {
											"oneOf": [
												{
													"type": "integer",
													"minimum": 0
												},
												{
													"type": "null"
												}
											]
										},
										"message_count": {
											"oneOf": [
												{
													"type": "integer",
													"minimum": 0
												},
												{
													"type": "null"
												}
											]
										}
									},
									"additionalProperties": false,
									"required": [
										"object",
										"id",
										"agent_id",
										"title",
										"status",
										"created_by",
										"agent_version",
										"models",
										"created_at",
										"updated_at"
									]
								},
								"maxItems": 100,
								"description": "Sessions found in this bounded scan. Access filtering can leave this array empty while has_more is true."
							},
							"has_more": {
								"type": "boolean",
								"description": "Whether more session candidates remain after this bounded scan."
							},
							"next_cursor": {
								"oneOf": [
									{
										"type": "string"
									},
									{
										"type": "null"
									}
								],
								"description": "Pass this cursor as start_cursor when has_more is true, even when results is empty."
							}
						},
						"additionalProperties": false,
						"required": [
							"object",
							"type",
							"session",
							"results",
							"has_more",
							"next_cursor"
						]
					},
					{
						"type": "object",
						"properties": {
							"results": {
								"type": "array",
								"items": {
									"oneOf": [
										{
											"type": "object",
											"properties": {
												"type": {
													"type": "string",
													"const": "page",
													"description": "Always `page`"
												},
												"url": {
													"type": "string"
												},
												"title": {
													"type": "string"
												},
												"icon": {
													"type": "string"
												}
											},
											"additionalProperties": false,
											"required": ["type", "url"]
										},
										{
											"type": "object",
											"properties": {
												"type": {
													"type": "string",
													"const": "database",
													"description": "Always `database`"
												},
												"url": {
													"type": "string"
												},
												"title": {
													"type": "string"
												},
												"icon": {
													"type": "string"
												}
											},
											"additionalProperties": false,
											"required": ["type", "url"]
										}
									]
								}
							},
							"nextCursor": {
								"type": "string"
							}
						},
						"additionalProperties": false,
						"required": ["results"]
					},
					{
						"type": "object",
						"properties": {
							"results": {
								"type": "array",
								"items": {
									"oneOf": [
										{
											"type": "object",
											"properties": {
												"type": {
													"type": "string",
													"const": "page",
													"description": "Always `page`"
												},
												"url": {
													"type": "string"
												},
												"title": {
													"type": "string"
												},
												"icon": {
													"type": "string"
												}
											},
											"additionalProperties": false,
											"required": ["type", "url"]
										},
										{
											"type": "object",
											"properties": {
												"type": {
													"type": "string",
													"const": "database",
													"description": "Always `database`"
												},
												"url": {
													"type": "string"
												},
												"title": {
													"type": "string"
												},
												"icon": {
													"type": "string"
												}
											},
											"additionalProperties": false,
											"required": ["type", "url"]
										}
									]
								}
							},
							"nextCursor": {
								"type": "string"
							}
						},
						"additionalProperties": false,
						"required": ["results"]
					},
					{
						"type": "object",
						"properties": {
							"results": {
								"type": "array",
								"items": {
									"oneOf": [
										{
											"type": "object",
											"properties": {
												"type": {
													"type": "string",
													"const": "page",
													"description": "Always `page`"
												},
												"url": {
													"type": "string"
												},
												"title": {
													"type": "string"
												},
												"icon": {
													"type": "string"
												}
											},
											"additionalProperties": false,
											"required": ["type", "url"]
										},
										{
											"type": "object",
											"properties": {
												"type": {
													"type": "string",
													"const": "database",
													"description": "Always `database`"
												},
												"url": {
													"type": "string"
												},
												"title": {
													"type": "string"
												},
												"icon": {
													"type": "string"
												}
											},
											"additionalProperties": false,
											"required": ["type", "url"]
										}
									]
								}
							},
							"nextCursor": {
								"type": "string"
							}
						},
						"additionalProperties": false,
						"required": ["results"]
					},
					{
						"type": "object",
						"properties": {
							"results": {
								"type": "array",
								"items": {
									"oneOf": [
										{
											"type": "object",
											"properties": {
												"type": {
													"type": "string",
													"const": "page",
													"description": "Always `page`"
												},
												"url": {
													"type": "string"
												},
												"title": {
													"type": "string"
												},
												"icon": {
													"type": "string"
												},
												"parent_data_source_url": {
													"type": "string",
													"description": "For a database row, its data source URL (collection://...). Pass it to tools that take a data source URL. Omitted otherwise."
												}
											},
											"additionalProperties": false,
											"required": ["type", "url"]
										},
										{
											"type": "object",
											"properties": {
												"type": {
													"type": "string",
													"const": "database",
													"description": "Always `database`"
												},
												"url": {
													"type": "string"
												},
												"title": {
													"type": "string"
												},
												"icon": {
													"type": "string"
												}
											},
											"additionalProperties": false,
											"required": ["type", "url"]
										}
									]
								}
							},
							"nextCursor": {
								"type": "string"
							}
						},
						"additionalProperties": false,
						"required": ["results"]
					},
					{
						"type": "object",
						"properties": {
							"answer": {
								"type": "string",
								"description": "The AI-generated answer to the question"
							}
						},
						"additionalProperties": false,
						"required": ["answer"]
					},
					{
						"type": "object",
						"properties": {
							"session_url": {
								"type": "string"
							},
							"status": {
								"type": "string",
								"enum": [
									"running",
									"completed",
									"interrupted",
									"requires_action",
									"failed",
									"terminated"
								],
								"description": "One of: `running`, `completed`, `interrupted`, `requires_action`, `failed`, `terminated`"
							}
						},
						"additionalProperties": false,
						"required": ["session_url", "status"]
					},
					{
						"type": "object",
						"properties": {
							"status": {
								"type": "string",
								"enum": [
									"running",
									"completed",
									"interrupted",
									"requires_action",
									"failed",
									"terminated"
								],
								"description": "One of: `running`, `completed`, `interrupted`, `requires_action`, `failed`, `terminated`"
							}
						},
						"additionalProperties": false,
						"required": ["status"]
					},
					{
						"type": "object",
						"properties": {
							"status": {
								"type": "string",
								"enum": [
									"running",
									"completed",
									"interrupted",
									"requires_action",
									"failed",
									"terminated"
								],
								"description": "One of: `running`, `completed`, `interrupted`, `requires_action`, `failed`, `terminated`"
							},
							"message": {
								"type": "string"
							}
						},
						"additionalProperties": false,
						"required": ["status"]
					},
					{
						"type": "object",
						"properties": {
							"status": {
								"type": "string",
								"enum": [
									"running",
									"completed",
									"interrupted",
									"requires_action",
									"failed",
									"terminated"
								],
								"description": "One of: `running`, `completed`, `interrupted`, `requires_action`, `failed`, `terminated`"
							},
							"interruptRequested": {
								"type": "boolean"
							}
						},
						"additionalProperties": false,
						"required": ["status", "interruptRequested"]
					},
					{
						"type": "object",
						"properties": {
							"status": {
								"type": "string",
								"enum": [
									"running",
									"completed",
									"interrupted",
									"requires_action",
									"failed",
									"terminated"
								],
								"description": "One of: `running`, `completed`, `interrupted`, `requires_action`, `failed`, `terminated`"
							}
						},
						"additionalProperties": false,
						"required": ["status"]
					},
					{
						"type": "object",
						"properties": {
							"result": {
								"type": "string"
							}
						},
						"additionalProperties": false,
						"required": ["result"]
					},
					{
						"type": "object",
						"properties": {
							"result": {
								"type": "string"
							}
						},
						"additionalProperties": false,
						"required": ["result"]
					},
					{
						"type": "object",
						"properties": {
							"result": {
								"type": "object",
								"properties": {
									"status": {
										"type": "string",
										"const": "success",
										"description": "The status of the operation."
									},
									"message": {
										"type": "string",
										"description": "The posted Slack reply message."
									},
									"url": {
										"type": "string",
										"description": "The URL of the posted Slack reply."
									},
									"channel_id": {
										"type": "string",
										"description": "The Slack channel ID containing the reply."
									},
									"thread_id": {
										"type": "string",
										"description": "The Slack thread URI that received the reply."
									},
									"slack_message_id": {
										"type": "string",
										"description": "The Slack message URI for the posted reply."
									}
								},
								"additionalProperties": false,
								"required": [
									"status",
									"message",
									"url",
									"channel_id",
									"thread_id",
									"slack_message_id"
								],
								"description": "The result of the Slack reply operation."
							}
						},
						"additionalProperties": false,
						"required": ["result"]
					},
					{
						"type": "object",
						"properties": {
							"result": {
								"type": "string",
								"description": "A rendered Markdown string describing the newly created view."
							}
						},
						"additionalProperties": false,
						"required": ["result"]
					},
					{
						"type": "object",
						"properties": {
							"result": {
								"type": "string",
								"description": "A rendered Markdown string describing the updated view."
							}
						},
						"additionalProperties": false,
						"required": ["result"]
					},
					{
						"type": "object",
						"properties": {
							"result": {
								"type": "object",
								"properties": {
									"status": {
										"type": "string",
										"const": "success",
										"description": "The status of the operation."
									},
									"searched_email_address": {
										"type": "string",
										"description": "The mailbox email address the search ran against."
									},
									"content": {
										"type": "string",
										"description": "Formatted email search results, including thread ids usable with view-thread-content."
									}
								},
								"additionalProperties": false,
								"required": ["status", "searched_email_address", "content"],
								"description": "The result of the email search."
							}
						},
						"additionalProperties": false,
						"required": ["result"]
					},
					{
						"type": "object",
						"properties": {
							"result": {
								"type": "object",
								"properties": {
									"status": {
										"type": "string",
										"const": "success",
										"description": "The status of the operation."
									},
									"email_address": {
										"type": "string",
										"description": "The mailbox email address the thread was read from."
									},
									"content": {
										"type": "string",
										"description": "Formatted email thread content."
									}
								},
								"additionalProperties": false,
								"required": ["status", "email_address", "content"],
								"description": "The result of the thread read."
							}
						},
						"additionalProperties": false,
						"required": ["result"]
					},
					{
						"type": "object",
						"properties": {
							"mutability": {
								"type": "string",
								"enum": ["read_only", "read_write"],
								"description": "One of: `read_only`, `read_write`"
							},
							"id": {
								"type": "string",
								"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"
							},
							"name": {
								"type": "string"
							},
							"title": {
								"type": "string"
							},
							"physicalName": {
								"type": "string"
							},
							"type": {
								"type": "string",
								"enum": [
									"text",
									"number",
									"checkbox",
									"date",
									"timestamp",
									"select",
									"multi_select",
									"person",
									"relation",
									"array_person",
									"array_relation"
								],
								"description": "One of: `text`, `number`, `checkbox`, `date`, `timestamp`, `select`, `multi_select`, `person`, `relation`, `array_person`, `array_relation`"
							},
							"selectOptions": {
								"type": "array",
								"items": {
									"type": "object",
									"properties": {
										"id": {
											"type": "string",
											"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"
										},
										"name": {
											"type": "string"
										},
										"title": {
											"type": "string"
										},
										"color": {
											"type": "string"
										}
									},
									"additionalProperties": false,
									"required": ["id", "name", "title", "color"]
								}
							},
							"status": {
								"type": "string",
								"enum": ["provisioning", "active", "error", "archived"],
								"description": "One of: `provisioning`, `active`, `error`, `archived`"
							},
							"config": {
								"type": "object",
								"properties": {
									"entity_type": {
										"type": "string",
										"const": "collection",
										"description": "Always `collection`"
									},
									"id": {
										"type": "string",
										"format": "uuid",
										"description": "ID of the Notion collection targeted by this relation column."
									}
								},
								"additionalProperties": false,
								"required": ["entity_type", "id"]
							}
						},
						"additionalProperties": false,
						"required": [
							"mutability",
							"id",
							"name",
							"title",
							"physicalName",
							"type",
							"selectOptions",
							"status"
						]
					},
					{
						"type": "object",
						"properties": {
							"mutability": {
								"type": "string",
								"enum": ["read_only", "read_write"],
								"description": "One of: `read_only`, `read_write`"
							},
							"id": {
								"type": "string",
								"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"
							},
							"name": {
								"type": "string"
							},
							"title": {
								"type": "string"
							},
							"physicalName": {
								"type": "string"
							},
							"type": {
								"type": "string",
								"enum": [
									"text",
									"number",
									"checkbox",
									"date",
									"timestamp",
									"select",
									"multi_select",
									"person",
									"relation",
									"array_person",
									"array_relation"
								],
								"description": "One of: `text`, `number`, `checkbox`, `date`, `timestamp`, `select`, `multi_select`, `person`, `relation`, `array_person`, `array_relation`"
							},
							"selectOptions": {
								"type": "array",
								"items": {
									"type": "object",
									"properties": {
										"id": {
											"type": "string",
											"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"
										},
										"name": {
											"type": "string"
										},
										"title": {
											"type": "string"
										},
										"color": {
											"type": "string"
										}
									},
									"additionalProperties": false,
									"required": ["id", "name", "title", "color"]
								}
							},
							"status": {
								"type": "string",
								"enum": ["provisioning", "active", "error", "archived"],
								"description": "One of: `provisioning`, `active`, `error`, `archived`"
							},
							"config": {
								"type": "object",
								"properties": {
									"entity_type": {
										"type": "string",
										"const": "collection",
										"description": "Always `collection`"
									},
									"id": {
										"type": "string",
										"format": "uuid",
										"description": "ID of the Notion collection targeted by this relation column."
									}
								},
								"additionalProperties": false,
								"required": ["entity_type", "id"]
							}
						},
						"additionalProperties": false,
						"required": [
							"mutability",
							"id",
							"name",
							"title",
							"physicalName",
							"type",
							"selectOptions",
							"status"
						]
					},
					{
						"type": "object",
						"properties": {
							"viewId": {
								"type": "string",
								"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"
							},
							"columnId": {
								"type": "string",
								"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"
							},
							"viewGeneration": {
								"type": "number"
							}
						},
						"additionalProperties": false,
						"required": ["viewId", "columnId", "viewGeneration"]
					},
					{
						"type": "object",
						"properties": {
							"viewId": {
								"type": "string",
								"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"
							},
							"joinId": {
								"type": "string",
								"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"
							},
							"sourceType": {
								"type": "string",
								"enum": ["xldb", "collection"],
								"description": "One of: `xldb`, `collection`"
							},
							"viewGeneration": {
								"type": "number"
							}
						},
						"additionalProperties": false,
						"required": ["viewId", "joinId", "sourceType", "viewGeneration"]
					},
					{
						"type": "object",
						"properties": {
							"viewId": {
								"type": "string",
								"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"
							},
							"joinId": {
								"type": "string",
								"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"
							},
							"sourceType": {
								"type": "string",
								"enum": ["xldb", "collection"],
								"description": "One of: `xldb`, `collection`"
							},
							"viewGeneration": {
								"type": "number"
							}
						},
						"additionalProperties": false,
						"required": ["viewId", "joinId", "sourceType", "viewGeneration"]
					},
					{
						"type": "object",
						"properties": {
							"viewId": {
								"type": "string",
								"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"
							},
							"joinId": {
								"type": "string",
								"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"
							},
							"sourceType": {
								"type": "string",
								"enum": ["xldb", "collection"],
								"description": "One of: `xldb`, `collection`"
							},
							"viewGeneration": {
								"type": "number"
							}
						},
						"additionalProperties": false,
						"required": ["viewId", "joinId", "sourceType", "viewGeneration"]
					},
					{
						"type": "object",
						"properties": {
							"viewId": {
								"type": "string",
								"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"
							},
							"columnId": {
								"type": "string",
								"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"
							},
							"viewGeneration": {
								"type": "number"
							}
						},
						"additionalProperties": false,
						"required": ["viewId", "columnId", "viewGeneration"]
					},
					{
						"type": "object",
						"properties": {
							"mutability": {
								"type": "string",
								"enum": ["read_only", "read_write"],
								"description": "One of: `read_only`, `read_write`"
							},
							"id": {
								"type": "string",
								"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"
							},
							"name": {
								"type": "string"
							},
							"title": {
								"type": "string"
							},
							"physicalName": {
								"type": "string"
							},
							"type": {
								"type": "string",
								"enum": [
									"text",
									"number",
									"checkbox",
									"date",
									"timestamp",
									"select",
									"multi_select",
									"person",
									"relation",
									"array_person",
									"array_relation"
								],
								"description": "One of: `text`, `number`, `checkbox`, `date`, `timestamp`, `select`, `multi_select`, `person`, `relation`, `array_person`, `array_relation`"
							},
							"selectOptions": {
								"type": "array",
								"items": {
									"type": "object",
									"properties": {
										"id": {
											"type": "string",
											"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"
										},
										"name": {
											"type": "string"
										},
										"title": {
											"type": "string"
										},
										"color": {
											"type": "string"
										}
									},
									"additionalProperties": false,
									"required": ["id", "name", "title", "color"]
								}
							},
							"status": {
								"type": "string",
								"enum": ["provisioning", "active", "error", "archived"],
								"description": "One of: `provisioning`, `active`, `error`, `archived`"
							},
							"config": {
								"type": "object",
								"properties": {
									"entity_type": {
										"type": "string",
										"const": "collection",
										"description": "Always `collection`"
									},
									"id": {
										"type": "string",
										"format": "uuid",
										"description": "ID of the Notion collection targeted by this relation column."
									}
								},
								"additionalProperties": false,
								"required": ["entity_type", "id"]
							}
						},
						"additionalProperties": false,
						"required": [
							"mutability",
							"id",
							"name",
							"title",
							"physicalName",
							"type",
							"selectOptions",
							"status"
						]
					},
					{
						"type": "object",
						"properties": {
							"tableId": {
								"type": "string",
								"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"
							},
							"columnId": {
								"type": "string",
								"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"
							},
							"ready": {
								"type": "boolean"
							},
							"indexes": {
								"type": "array",
								"items": {
									"type": "object",
									"properties": {
										"name": {
											"type": "string"
										},
										"accessMethod": {
											"type": "string",
											"enum": ["btree", "gin"],
											"description": "One of: `btree`, `gin`"
										},
										"target": {
											"type": "string",
											"enum": ["value", "option_sort_key"],
											"description": "One of: `value`, `option_sort_key`"
										},
										"status": {
											"type": "string",
											"enum": [
												"missing",
												"accepted",
												"creating",
												"stabilizing",
												"ready",
												"failed",
												"paused",
												"deleting",
												"drifted"
											],
											"description": "One of: `missing`, `accepted`, `creating`, `stabilizing`, `ready`, `failed`, `paused`, `deleting`, `drifted`"
										},
										"id": {
											"type": "string",
											"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"
										}
									},
									"additionalProperties": false,
									"required": ["name", "accessMethod", "target", "status"]
								}
							}
						},
						"additionalProperties": false,
						"required": ["tableId", "columnId", "ready", "indexes"]
					},
					{
						"type": "object",
						"properties": {
							"tableId": {
								"type": "string",
								"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"
							},
							"columnId": {
								"type": "string",
								"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"
							},
							"ready": {
								"type": "boolean"
							},
							"indexes": {
								"type": "array",
								"items": {
									"type": "object",
									"properties": {
										"name": {
											"type": "string"
										},
										"accessMethod": {
											"type": "string",
											"enum": ["btree", "gin"],
											"description": "One of: `btree`, `gin`"
										},
										"target": {
											"type": "string",
											"enum": ["value", "option_sort_key"],
											"description": "One of: `value`, `option_sort_key`"
										},
										"status": {
											"type": "string",
											"enum": [
												"missing",
												"accepted",
												"creating",
												"stabilizing",
												"ready",
												"failed",
												"paused",
												"deleting",
												"drifted"
											],
											"description": "One of: `missing`, `accepted`, `creating`, `stabilizing`, `ready`, `failed`, `paused`, `deleting`, `drifted`"
										},
										"id": {
											"type": "string",
											"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"
										}
									},
									"additionalProperties": false,
									"required": ["name", "accessMethod", "target", "status"]
								}
							}
						},
						"additionalProperties": false,
						"required": ["tableId", "columnId", "ready", "indexes"]
					},
					{
						"type": "object",
						"properties": {
							"tableId": {
								"type": "string",
								"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"
							},
							"columnId": {
								"type": "string",
								"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"
							},
							"ready": {
								"type": "boolean"
							},
							"indexes": {
								"type": "array",
								"items": {
									"type": "object",
									"properties": {
										"name": {
											"type": "string"
										},
										"accessMethod": {
											"type": "string",
											"enum": ["btree", "gin"],
											"description": "One of: `btree`, `gin`"
										},
										"target": {
											"type": "string",
											"enum": ["value", "option_sort_key"],
											"description": "One of: `value`, `option_sort_key`"
										},
										"status": {
											"type": "string",
											"enum": [
												"missing",
												"accepted",
												"creating",
												"stabilizing",
												"ready",
												"failed",
												"paused",
												"deleting",
												"drifted"
											],
											"description": "One of: `missing`, `accepted`, `creating`, `stabilizing`, `ready`, `failed`, `paused`, `deleting`, `drifted`"
										},
										"id": {
											"type": "string",
											"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"
										}
									},
									"additionalProperties": false,
									"required": ["name", "accessMethod", "target", "status"]
								}
							}
						},
						"additionalProperties": false,
						"required": ["tableId", "columnId", "ready", "indexes"]
					},
					{
						"type": "object",
						"properties": {
							"table": {
								"type": "object",
								"properties": {
									"id": {
										"type": "string",
										"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"
									},
									"name": {
										"type": "string"
									},
									"title": {
										"type": "string"
									}
								},
								"additionalProperties": false,
								"required": ["id", "name", "title"]
							},
							"columns": {
								"type": "array",
								"items": {
									"type": "object",
									"properties": {
										"id": {
											"type": "string",
											"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"
										},
										"name": {
											"type": "string"
										},
										"title": {
											"type": "string"
										},
										"physicalName": {
											"type": "string"
										},
										"type": {
											"type": "string",
											"enum": [
												"text",
												"number",
												"checkbox",
												"date",
												"timestamp",
												"select",
												"multi_select",
												"person",
												"relation",
												"array_person",
												"array_relation"
											],
											"description": "One of: `text`, `number`, `checkbox`, `date`, `timestamp`, `select`, `multi_select`, `person`, `relation`, `array_person`, `array_relation`"
										},
										"compatibleIndexTypes": {
											"type": "array",
											"items": {
												"type": "string",
												"enum": ["btree", "gin", "trigram", "option_sort_key"],
												"description": "One of: `btree`, `gin`, `trigram`, `option_sort_key`"
											}
										}
									},
									"additionalProperties": false,
									"required": [
										"id",
										"name",
										"title",
										"physicalName",
										"type",
										"compatibleIndexTypes"
									]
								}
							},
							"indexes": {
								"type": "array",
								"items": {
									"type": "object",
									"properties": {
										"id": {
											"type": "string",
											"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"
										},
										"tableId": {
											"type": "string",
											"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"
										},
										"name": {
											"type": "string"
										},
										"columns": {
											"type": "array",
											"items": {
												"type": "object",
												"properties": {
													"id": {
														"type": "string",
														"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"
													},
													"name": {
														"type": "string"
													},
													"title": {
														"type": "string"
													},
													"type": {
														"type": "string",
														"enum": [
															"text",
															"number",
															"checkbox",
															"date",
															"timestamp",
															"select",
															"multi_select",
															"person",
															"relation",
															"array_person",
															"array_relation"
														],
														"description": "One of: `text`, `number`, `checkbox`, `date`, `timestamp`, `select`, `multi_select`, `person`, `relation`, `array_person`, `array_relation`"
													},
													"target": {
														"type": "string",
														"enum": ["value", "option_sort_key"],
														"description": "One of: `value`, `option_sort_key`"
													},
													"sortDirection": {
														"type": "string",
														"enum": ["asc", "desc"],
														"description": "One of: `asc`, `desc`"
													},
													"nullsPosition": {
														"type": "string",
														"enum": ["first", "last"],
														"description": "One of: `first`, `last`"
													}
												},
												"additionalProperties": false,
												"required": ["id", "name", "title", "type", "target"]
											}
										},
										"indexType": {
											"type": "string",
											"enum": ["btree", "gin", "trigram", "option_sort_key"],
											"description": "One of: `btree`, `gin`, `trigram`, `option_sort_key`"
										},
										"accessMethod": {
											"type": "string",
											"enum": ["btree", "gin"],
											"description": "One of: `btree`, `gin`"
										},
										"status": {
											"type": "string",
											"enum": ["provisioning", "active", "error", "archived"],
											"description": "One of: `provisioning`, `active`, `error`, `archived`"
										},
										"summaryStatus": {
											"type": "string",
											"enum": [
												"accepted",
												"creating",
												"stabilizing",
												"ready",
												"failed",
												"paused",
												"deleting",
												"drifted"
											],
											"description": "One of: `accepted`, `creating`, `stabilizing`, `ready`, `failed`, `paused`, `deleting`, `drifted`"
										},
										"generation": {
											"type": "number"
										},
										"physicalState": {
											"type": "string",
											"enum": ["missing", "building", "invalid", "ready"],
											"description": "One of: `missing`, `building`, `invalid`, `ready`"
										},
										"createdAt": {
											"type": "string"
										},
										"updatedAt": {
											"type": "string"
										},
										"errorCode": {
											"type": "string"
										}
									},
									"additionalProperties": false,
									"required": [
										"id",
										"tableId",
										"name",
										"columns",
										"indexType",
										"accessMethod",
										"status",
										"summaryStatus",
										"generation",
										"physicalState",
										"createdAt",
										"updatedAt"
									]
								}
							},
							"views": {
								"type": "array",
								"items": {
									"type": "object",
									"properties": {
										"id": {
											"type": "string",
											"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"
										},
										"name": {
											"type": "string"
										},
										"columnMetadataAvailability": {
											"type": "string",
											"enum": ["available", "partial", "unavailable"],
											"description": "One of: `available`, `partial`, `unavailable`"
										},
										"columns": {
											"type": "array",
											"items": {
												"type": "object",
												"properties": {
													"id": {
														"type": "string",
														"pattern": "^(?:[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}|(?:join|collection_join):[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}:[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})$"
													},
													"name": {
														"type": "string"
													},
													"title": {
														"type": "string"
													},
													"type": {
														"type": "string",
														"enum": [
															"text",
															"number",
															"checkbox",
															"date",
															"timestamp",
															"select",
															"multi_select",
															"person",
															"relation",
															"array_person",
															"array_relation"
														],
														"description": "One of: `text`, `number`, `checkbox`, `date`, `timestamp`, `select`, `multi_select`, `person`, `relation`, `array_person`, `array_relation`"
													},
													"source": {
														"type": "string",
														"enum": [
															"base",
															"join",
															"collection_join",
															"view_column"
														],
														"description": "One of: `base`, `join`, `collection_join`, `view_column`"
													},
													"indexable": {
														"type": "boolean"
													}
												},
												"additionalProperties": false,
												"required": [
													"id",
													"name",
													"title",
													"type",
													"source",
													"indexable"
												]
											}
										},
										"filters": {
											"type": "array",
											"items": {
												"type": "object",
												"properties": {
													"columnId": {
														"type": "string",
														"pattern": "^(?:[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}|(?:join|collection_join):[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}:[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})$"
													},
													"operator": {
														"type": "string"
													}
												},
												"additionalProperties": false,
												"required": ["columnId", "operator"]
											}
										},
										"sorts": {
											"type": "array",
											"items": {
												"type": "object",
												"properties": {
													"columnId": {
														"type": "string",
														"pattern": "^(?:[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}|(?:join|collection_join):[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}:[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})$"
													},
													"direction": {
														"type": "string"
													}
												},
												"additionalProperties": false,
												"required": ["columnId", "direction"]
											}
										},
										"unresolvedFilterCount": {
											"type": "number"
										},
										"unresolvedSortCount": {
											"type": "number"
										},
										"title": {
											"type": "string"
										},
										"filterOperator": {
											"type": "string"
										}
									},
									"additionalProperties": false,
									"required": [
										"id",
										"name",
										"columnMetadataAvailability",
										"columns",
										"filters",
										"sorts",
										"unresolvedFilterCount",
										"unresolvedSortCount"
									]
								}
							},
							"columnUsage": {
								"type": "array",
								"items": {
									"type": "object",
									"properties": {
										"columnId": {
											"type": "string",
											"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"
										},
										"filters": {
											"type": "object",
											"additionalProperties": {
												"type": "number"
											}
										},
										"sorts": {
											"type": "object",
											"additionalProperties": {
												"type": "number"
											}
										},
										"viewIds": {
											"type": "array",
											"items": {
												"type": "string",
												"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"
											}
										}
									},
									"additionalProperties": false,
									"required": ["columnId", "filters", "sorts", "viewIds"]
								}
							}
						},
						"additionalProperties": false,
						"required": ["table", "columns", "indexes", "views", "columnUsage"]
					},
					{
						"type": "object",
						"properties": {
							"columns": {
								"type": "array",
								"items": {
									"type": "object",
									"properties": {
										"id": {
											"type": "string",
											"pattern": "^(?:[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}|(?:join|collection_join):[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}:[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})$"
										},
										"name": {
											"type": "string"
										},
										"title": {
											"type": "string"
										},
										"physicalName": {
											"type": "string"
										},
										"type": {
											"type": "string",
											"enum": [
												"text",
												"number",
												"checkbox",
												"date",
												"timestamp",
												"select",
												"multi_select",
												"person",
												"relation",
												"array_person",
												"array_relation"
											],
											"description": "One of: `text`, `number`, `checkbox`, `date`, `timestamp`, `select`, `multi_select`, `person`, `relation`, `array_person`, `array_relation`"
										}
									},
									"additionalProperties": false,
									"required": ["id", "name", "title", "physicalName", "type"]
								}
							},
							"rows": {
								"type": "array",
								"items": {
									"type": "object",
									"properties": {
										"id": {
											"type": "string",
											"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"
										},
										"cells": {
											"type": "object",
											"additionalProperties": {}
										}
									},
									"additionalProperties": false,
									"required": ["id", "cells"]
								}
							},
							"hasMore": {
								"type": "boolean"
							},
							"limit": {
								"type": "number"
							},
							"actorQuerySequence": {
								"type": "number"
							},
							"stats": {
								"type": "object",
								"properties": {
									"durationMs": {
										"type": "number"
									},
									"queryPlaneMs": {
										"type": "number"
									}
								},
								"additionalProperties": false,
								"required": ["durationMs"]
							},
							"analysis": {
								"type": "object",
								"properties": {
									"mode": {
										"type": "string",
										"enum": ["plan", "analyze"],
										"description": "One of: `plan`, `analyze`"
									},
									"durationMs": {
										"type": "number"
									},
									"plan": {
										"type": "string"
									}
								},
								"additionalProperties": false,
								"required": ["mode", "durationMs", "plan"]
							},
							"nextCursor": {
								"type": "string"
							},
							"nextOffset": {
								"type": "number"
							}
						},
						"additionalProperties": false,
						"required": ["columns", "rows", "hasMore", "limit"]
					},
					{
						"type": "object",
						"properties": {
							"columns": {
								"type": "array",
								"items": {
									"type": "object",
									"properties": {
										"id": {
											"type": "string",
											"pattern": "^(?:[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}|(?:join|collection_join):[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}:[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})$"
										},
										"name": {
											"type": "string"
										},
										"title": {
											"type": "string"
										},
										"physicalName": {
											"type": "string"
										},
										"type": {
											"type": "string",
											"enum": [
												"text",
												"number",
												"checkbox",
												"date",
												"timestamp",
												"select",
												"multi_select",
												"person",
												"relation",
												"array_person",
												"array_relation"
											],
											"description": "One of: `text`, `number`, `checkbox`, `date`, `timestamp`, `select`, `multi_select`, `person`, `relation`, `array_person`, `array_relation`"
										}
									},
									"additionalProperties": false,
									"required": ["id", "name", "title", "physicalName", "type"]
								}
							},
							"rows": {
								"type": "array",
								"items": {
									"type": "object",
									"properties": {
										"id": {
											"type": "string",
											"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"
										},
										"cells": {
											"type": "object",
											"additionalProperties": {}
										}
									},
									"additionalProperties": false,
									"required": ["id", "cells"]
								}
							},
							"hasMore": {
								"type": "boolean"
							},
							"limit": {
								"type": "number"
							},
							"actorQuerySequence": {
								"type": "number"
							},
							"stats": {
								"type": "object",
								"properties": {
									"durationMs": {
										"type": "number"
									},
									"queryPlaneMs": {
										"type": "number"
									}
								},
								"additionalProperties": false,
								"required": ["durationMs"]
							},
							"analysis": {
								"type": "object",
								"properties": {
									"mode": {
										"type": "string",
										"enum": ["plan", "analyze"],
										"description": "One of: `plan`, `analyze`"
									},
									"durationMs": {
										"type": "number"
									},
									"plan": {
										"type": "string"
									}
								},
								"additionalProperties": false,
								"required": ["mode", "durationMs", "plan"]
							},
							"nextCursor": {
								"type": "string"
							},
							"nextOffset": {
								"type": "number"
							}
						},
						"additionalProperties": false,
						"required": ["columns", "rows", "hasMore", "limit"]
					},
					{
						"type": "object",
						"properties": {
							"view": {
								"type": "object",
								"properties": {
									"id": {
										"type": "string",
										"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"
									},
									"tableId": {
										"type": "string",
										"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"
									},
									"name": {
										"type": "string"
									},
									"title": {
										"oneOf": [
											{
												"type": "string"
											},
											{
												"type": "null"
											}
										]
									},
									"role": {
										"type": "string",
										"enum": ["default", "custom"],
										"description": "One of: `default`, `custom`"
									},
									"generation": {
										"type": "number"
									},
									"queryAddressable": {
										"type": "boolean"
									},
									"sqlAddressable": {
										"type": "boolean"
									},
									"updatedAt": {
										"type": "string",
										"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?(?:Z|[+-]\\d{2}:\\d{2})$"
									},
									"externalOwnerId": {
										"type": "string"
									},
									"sync": {
										"type": "object",
										"properties": {
											"syncId": {
												"type": "string",
												"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"
											},
											"collectionId": {
												"type": "string",
												"format": "uuid"
											}
										},
										"additionalProperties": false,
										"required": ["syncId", "collectionId"]
									}
								},
								"additionalProperties": false,
								"required": [
									"id",
									"tableId",
									"name",
									"title",
									"role",
									"generation",
									"queryAddressable",
									"sqlAddressable",
									"updatedAt"
								]
							},
							"joins": {
								"type": "array",
								"items": {
									"oneOf": [
										{
											"type": "object",
											"properties": {
												"id": {
													"type": "string",
													"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"
												},
												"leftColumnId": {
													"type": "string",
													"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"
												},
												"joinType": {
													"type": "string",
													"const": "left",
													"description": "Always `left`"
												},
												"source": {
													"type": "object",
													"properties": {
														"type": {
															"type": "string",
															"const": "xldb",
															"description": "Always `xldb`"
														},
														"tableId": {
															"type": "string",
															"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"
														},
														"rightColumnId": {
															"type": "string",
															"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"
														}
													},
													"additionalProperties": false,
													"required": ["type", "tableId", "rightColumnId"]
												},
												"columns": {
													"type": "array",
													"items": {
														"type": "object",
														"properties": {
															"id": {
																"type": "string",
																"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"
															},
															"columnId": {
																"type": "string",
																"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"
															}
														},
														"additionalProperties": false,
														"required": ["id", "columnId"]
													}
												}
											},
											"additionalProperties": false,
											"required": [
												"id",
												"leftColumnId",
												"joinType",
												"source",
												"columns"
											]
										},
										{
											"type": "object",
											"properties": {
												"id": {
													"type": "string",
													"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"
												},
												"leftColumnId": {
													"type": "string",
													"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"
												},
												"joinType": {
													"type": "string",
													"const": "left",
													"description": "Always `left`"
												},
												"source": {
													"type": "object",
													"properties": {
														"type": {
															"type": "string",
															"const": "collection",
															"description": "Always `collection`"
														},
														"collectionId": {
															"type": "string",
															"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"
														},
														"rightPropertyId": {
															"type": "string"
														}
													},
													"additionalProperties": false,
													"required": [
														"type",
														"collectionId",
														"rightPropertyId"
													]
												},
												"columns": {
													"type": "array",
													"items": {
														"type": "object",
														"properties": {
															"id": {
																"type": "string",
																"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"
															},
															"propertyId": {
																"type": "string"
															}
														},
														"additionalProperties": false,
														"required": ["id", "propertyId"]
													}
												}
											},
											"additionalProperties": false,
											"required": [
												"id",
												"leftColumnId",
												"joinType",
												"source",
												"columns"
											]
										}
									]
								}
							}
						},
						"additionalProperties": false,
						"required": ["view", "joins"]
					},
					{
						"type": "object",
						"properties": {
							"status": {
								"type": "string",
								"const": "detached",
								"description": "Always `detached`"
							},
							"viewId": {
								"type": "string",
								"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"
							},
							"syncId": {
								"type": "string",
								"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"
							},
							"collectionId": {
								"type": "string",
								"format": "uuid"
							}
						},
						"additionalProperties": false,
						"required": ["status", "viewId", "syncId", "collectionId"]
					},
					{
						"type": "object",
						"properties": {
							"status": {
								"type": "string",
								"const": "alreadyDetached",
								"description": "Always `alreadyDetached`"
							},
							"viewId": {
								"type": "string",
								"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"
							}
						},
						"additionalProperties": false,
						"required": ["status", "viewId"]
					},
					{
						"type": "object",
						"properties": {
							"accepted": {
								"type": "number"
							},
							"upserted": {
								"type": "number"
							},
							"deleted": {
								"type": "number"
							}
						},
						"additionalProperties": false,
						"required": ["accepted", "upserted", "deleted"]
					},
					{
						"type": "object",
						"properties": {
							"tableId": {
								"type": "string",
								"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"
							}
						},
						"additionalProperties": false,
						"required": ["tableId"]
					},
					{
						"type": "object",
						"properties": {
							"currentFingerprint": {
								"type": "string"
							},
							"planFingerprint": {
								"type": "string"
							},
							"action": {
								"type": "string",
								"enum": ["create", "noop", "update"],
								"description": "One of: `create`, `noop`, `update`"
							},
							"destructive": {
								"type": "boolean"
							},
							"changes": {
								"type": "array",
								"items": {
									"type": "object",
									"properties": {
										"action": {
											"type": "string",
											"enum": [
												"add",
												"remove",
												"replace",
												"update_column",
												"update_column_title"
											],
											"description": "One of: `add`, `remove`, `replace`, `update_column`, `update_column_title`"
										},
										"current": {
											"type": "object",
											"properties": {
												"name": {
													"type": "string",
													"description": "Stable name of the table or column."
												},
												"title": {
													"type": "string",
													"description": "Display title of the table or column."
												},
												"type": {
													"type": "string",
													"enum": [
														"text",
														"number",
														"checkbox",
														"date",
														"timestamp",
														"select",
														"multi_select",
														"person",
														"relation",
														"array_person",
														"array_relation"
													],
													"description": "One of: `text`, `number`, `checkbox`, `date`, `timestamp`, `select`, `multi_select`, `person`, `relation`, `array_person`, `array_relation`"
												},
												"config": {
													"type": "object",
													"properties": {
														"entity_type": {
															"type": "string",
															"const": "collection",
															"description": "Always `collection`"
														},
														"id": {
															"type": "string",
															"format": "uuid",
															"description": "ID of the Notion collection targeted by this relation column."
														}
													},
													"additionalProperties": false,
													"required": ["entity_type", "id"],
													"description": "Type-specific column settings, such as the target of a relation."
												},
												"mutability": {
													"type": "string",
													"enum": ["read_only", "read_write"],
													"description": "One of: `read_only`, `read_write`"
												},
												"selectOptions": {
													"type": "array",
													"items": {
														"type": "object",
														"properties": {
															"name": {
																"type": "string",
																"description": "Stable name used to identify the column or select option."
															},
															"title": {
																"type": "string",
																"description": "Display title of the column or select option."
															},
															"color": {
																"type": "string",
																"description": "Display color of the select option."
															}
														},
														"additionalProperties": false,
														"required": ["name", "title"]
													},
													"description": "Available options for select and multi-select columns."
												}
											},
											"additionalProperties": false,
											"required": ["name", "title", "type"]
										},
										"desired": {
											"type": "object",
											"properties": {
												"name": {
													"type": "string",
													"description": "Stable name of the table or column."
												},
												"title": {
													"type": "string",
													"description": "Display title of the table or column."
												},
												"type": {
													"type": "string",
													"enum": [
														"text",
														"number",
														"checkbox",
														"date",
														"timestamp",
														"select",
														"multi_select",
														"person",
														"relation",
														"array_person",
														"array_relation"
													],
													"description": "One of: `text`, `number`, `checkbox`, `date`, `timestamp`, `select`, `multi_select`, `person`, `relation`, `array_person`, `array_relation`"
												},
												"config": {
													"type": "object",
													"properties": {
														"entity_type": {
															"type": "string",
															"const": "collection",
															"description": "Always `collection`"
														},
														"id": {
															"type": "string",
															"format": "uuid",
															"description": "ID of the Notion collection targeted by this relation column."
														}
													},
													"additionalProperties": false,
													"required": ["entity_type", "id"],
													"description": "Type-specific column settings, such as the target of a relation."
												},
												"mutability": {
													"type": "string",
													"enum": ["read_only", "read_write"],
													"description": "One of: `read_only`, `read_write`"
												},
												"selectOptions": {
													"type": "array",
													"items": {
														"type": "object",
														"properties": {
															"name": {
																"type": "string",
																"description": "Stable name used to identify the column or select option."
															},
															"title": {
																"type": "string",
																"description": "Display title of the column or select option."
															},
															"color": {
																"type": "string",
																"description": "Display color of the select option."
															}
														},
														"additionalProperties": false,
														"required": ["name", "title"]
													},
													"description": "Available options for select and multi-select columns."
												}
											},
											"additionalProperties": false,
											"required": ["name", "title", "type"]
										}
									},
									"additionalProperties": false,
									"required": ["action"]
								}
							},
							"selectOptionChanges": {
								"type": "array",
								"items": {
									"type": "object",
									"properties": {
										"action": {
											"type": "string",
											"enum": ["add", "update_select_option_title"],
											"description": "One of: `add`, `update_select_option_title`"
										},
										"columnName": {
											"type": "string"
										},
										"current": {
											"type": "object",
											"properties": {
												"name": {
													"type": "string",
													"description": "Stable name used to identify the column or select option."
												},
												"title": {
													"type": "string",
													"description": "Display title of the column or select option."
												},
												"color": {
													"type": "string",
													"description": "Display color of the select option."
												}
											},
											"additionalProperties": false,
											"required": ["name", "title"]
										},
										"desired": {
											"type": "object",
											"properties": {
												"name": {
													"type": "string",
													"description": "Stable name used to identify the column or select option."
												},
												"title": {
													"type": "string",
													"description": "Display title of the column or select option."
												},
												"color": {
													"type": "string",
													"description": "Display color of the select option."
												}
											},
											"additionalProperties": false,
											"required": ["name", "title"]
										}
									},
									"additionalProperties": false,
									"required": ["action", "columnName"]
								}
							},
							"tableTitleChange": {
								"type": "object",
								"properties": {
									"action": {
										"type": "string",
										"const": "update_table_title",
										"description": "Always `update_table_title`"
									},
									"current": {
										"type": "string"
									},
									"desired": {
										"type": "string"
									}
								},
								"additionalProperties": false,
								"required": ["action", "current", "desired"]
							},
							"uniqueConstraintChanges": {
								"type": "array",
								"items": {
									"type": "object",
									"properties": {
										"action": {
											"type": "string",
											"const": "add",
											"description": "Always `add`"
										},
										"columns": {
											"type": "array",
											"items": {
												"type": "string"
											}
										}
									},
									"additionalProperties": false,
									"required": ["action", "columns"]
								}
							}
						},
						"additionalProperties": false,
						"required": [
							"currentFingerprint",
							"planFingerprint",
							"action",
							"destructive",
							"changes",
							"selectOptionChanges"
						]
					},
					{
						"type": "object",
						"properties": {
							"view": {
								"type": "object",
								"properties": {
									"id": {
										"type": "string",
										"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"
									},
									"tableId": {
										"type": "string",
										"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"
									},
									"name": {
										"type": "string"
									},
									"title": {
										"oneOf": [
											{
												"type": "string"
											},
											{
												"type": "null"
											}
										]
									},
									"role": {
										"type": "string",
										"enum": ["default", "custom"],
										"description": "One of: `default`, `custom`"
									},
									"generation": {
										"type": "number"
									},
									"queryAddressable": {
										"type": "boolean"
									},
									"sqlAddressable": {
										"type": "boolean"
									},
									"updatedAt": {
										"type": "string",
										"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?(?:Z|[+-]\\d{2}:\\d{2})$"
									},
									"externalOwnerId": {
										"type": "string"
									},
									"sync": {
										"type": "object",
										"properties": {
											"syncId": {
												"type": "string",
												"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"
											},
											"collectionId": {
												"type": "string",
												"format": "uuid"
											}
										},
										"additionalProperties": false,
										"required": ["syncId", "collectionId"]
									}
								},
								"additionalProperties": false,
								"required": [
									"id",
									"tableId",
									"name",
									"title",
									"role",
									"generation",
									"queryAddressable",
									"sqlAddressable",
									"updatedAt"
								]
							},
							"columns": {
								"type": "array",
								"items": {
									"type": "object",
									"properties": {
										"id": {
											"type": "string",
											"pattern": "^(?:[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}|(?:join|collection_join):[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}:[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})$"
										},
										"name": {
											"type": "string"
										},
										"type": {
											"type": "string",
											"enum": [
												"text",
												"number",
												"checkbox",
												"date",
												"timestamp",
												"select",
												"multi_select",
												"person",
												"relation",
												"array_person",
												"array_relation"
											],
											"description": "One of: `text`, `number`, `checkbox`, `date`, `timestamp`, `select`, `multi_select`, `person`, `relation`, `array_person`, `array_relation`"
										},
										"mutability": {
											"type": "string",
											"enum": ["read_only", "read_write"],
											"description": "One of: `read_only`, `read_write`"
										},
										"source": {
											"type": "string",
											"enum": [
												"base",
												"join",
												"collection_join",
												"view_column"
											],
											"description": "One of: `base`, `join`, `collection_join`, `view_column`"
										},
										"config": {
											"type": "object",
											"properties": {
												"entity_type": {
													"type": "string",
													"const": "collection",
													"description": "Always `collection`"
												},
												"id": {
													"type": "string",
													"format": "uuid",
													"description": "ID of the Notion collection targeted by this relation column."
												}
											},
											"additionalProperties": false,
											"required": ["entity_type", "id"]
										},
										"physicalName": {
											"type": "string"
										}
									},
									"additionalProperties": false,
									"required": ["id", "name", "type", "mutability", "source"]
								}
							},
							"query": {
								"type": "object",
								"properties": {
									"sorts": {
										"type": "array",
										"items": {
											"type": "object",
											"properties": {
												"columnId": {
													"type": "string",
													"pattern": "^(?:[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}|(?:join|collection_join):[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}:[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})$"
												},
												"direction": {
													"type": "string"
												}
											},
											"additionalProperties": false,
											"required": ["columnId", "direction"]
										}
									},
									"filter": {
										"description": "Filter tree in the same format as the filter input of xldb_query_rows."
									}
								},
								"additionalProperties": false,
								"required": ["sorts"]
							}
						},
						"additionalProperties": false,
						"required": ["view", "columns"]
					},
					{
						"type": "object",
						"properties": {
							"views": {
								"type": "array",
								"items": {
									"type": "object",
									"properties": {
										"id": {
											"type": "string",
											"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"
										},
										"tableId": {
											"type": "string",
											"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"
										},
										"name": {
											"type": "string"
										},
										"title": {
											"oneOf": [
												{
													"type": "string"
												},
												{
													"type": "null"
												}
											]
										},
										"role": {
											"type": "string",
											"enum": ["default", "custom"],
											"description": "One of: `default`, `custom`"
										},
										"generation": {
											"type": "number"
										},
										"queryAddressable": {
											"type": "boolean"
										},
										"sqlAddressable": {
											"type": "boolean"
										},
										"updatedAt": {
											"type": "string",
											"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?(?:Z|[+-]\\d{2}:\\d{2})$"
										},
										"externalOwnerId": {
											"type": "string"
										},
										"sync": {
											"type": "object",
											"properties": {
												"syncId": {
													"type": "string",
													"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"
												},
												"collectionId": {
													"type": "string",
													"format": "uuid"
												}
											},
											"additionalProperties": false,
											"required": ["syncId", "collectionId"]
										}
									},
									"additionalProperties": false,
									"required": [
										"id",
										"tableId",
										"name",
										"title",
										"role",
										"generation",
										"queryAddressable",
										"sqlAddressable",
										"updatedAt"
									]
								}
							}
						},
						"additionalProperties": false,
						"required": ["views"]
					},
					{
						"type": "object",
						"properties": {
							"table": {
								"type": "object",
								"properties": {
									"id": {
										"type": "string",
										"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"
									},
									"name": {
										"type": "string"
									},
									"title": {
										"type": "string"
									},
									"physicalName": {
										"type": "string"
									},
									"status": {
										"type": "string",
										"enum": ["provisioning", "active", "error"],
										"description": "One of: `provisioning`, `active`, `error`"
									}
								},
								"additionalProperties": false,
								"required": ["id", "name", "title", "physicalName", "status"]
							},
							"columns": {
								"type": "array",
								"items": {
									"type": "object",
									"properties": {
										"mutability": {
											"type": "string",
											"enum": ["read_only", "read_write"],
											"description": "One of: `read_only`, `read_write`"
										},
										"id": {
											"type": "string",
											"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"
										},
										"name": {
											"type": "string"
										},
										"title": {
											"type": "string"
										},
										"physicalName": {
											"type": "string"
										},
										"type": {
											"type": "string",
											"enum": [
												"text",
												"number",
												"checkbox",
												"date",
												"timestamp",
												"select",
												"multi_select",
												"person",
												"relation",
												"array_person",
												"array_relation"
											],
											"description": "One of: `text`, `number`, `checkbox`, `date`, `timestamp`, `select`, `multi_select`, `person`, `relation`, `array_person`, `array_relation`"
										},
										"selectOptions": {
											"type": "array",
											"items": {
												"type": "object",
												"properties": {
													"id": {
														"type": "string",
														"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"
													},
													"name": {
														"type": "string"
													},
													"title": {
														"type": "string"
													},
													"color": {
														"type": "string"
													}
												},
												"additionalProperties": false,
												"required": ["id", "name", "title", "color"]
											}
										},
										"status": {
											"type": "string",
											"enum": ["provisioning", "active", "error"],
											"description": "One of: `provisioning`, `active`, `error`"
										},
										"config": {
											"type": "object",
											"properties": {
												"entity_type": {
													"type": "string",
													"const": "collection",
													"description": "Always `collection`"
												},
												"id": {
													"type": "string",
													"format": "uuid",
													"description": "ID of the Notion collection targeted by this relation column."
												}
											},
											"additionalProperties": false,
											"required": ["entity_type", "id"]
										}
									},
									"additionalProperties": false,
									"required": [
										"mutability",
										"id",
										"name",
										"title",
										"physicalName",
										"type",
										"selectOptions",
										"status"
									]
								}
							},
							"uniqueConstraints": {
								"type": "array",
								"items": {
									"type": "object",
									"properties": {
										"id": {
											"type": "string",
											"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"
										},
										"columnIds": {
											"type": "array",
											"items": {
												"type": "string",
												"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"
											}
										},
										"status": {
											"type": "string",
											"enum": ["provisioning", "active", "error"],
											"description": "One of: `provisioning`, `active`, `error`"
										}
									},
									"additionalProperties": false,
									"required": ["id", "columnIds", "status"]
								}
							}
						},
						"additionalProperties": false,
						"required": ["table", "columns", "uniqueConstraints"]
					},
					{
						"type": "object",
						"properties": {
							"status": {
								"type": "string",
								"enum": ["not_provisioned", "provisioning", "ready", "failed"],
								"description": "One of: `not_provisioned`, `provisioning`, `ready`, `failed`"
							}
						},
						"additionalProperties": false,
						"required": ["status"]
					},
					{
						"type": "object",
						"properties": {
							"tables": {
								"type": "array",
								"items": {
									"type": "object",
									"properties": {
										"id": {
											"type": "string"
										},
										"name": {
											"type": "string"
										},
										"title": {
											"type": "string"
										},
										"physicalName": {
											"type": "string"
										},
										"status": {
											"type": "string",
											"enum": ["provisioning", "active", "error"],
											"description": "One of: `provisioning`, `active`, `error`"
										},
										"updatedAt": {
											"type": "string",
											"description": "A date-and-time string in ISO-8601 format."
										},
										"description": {
											"type": "string"
										},
										"rowCountEstimate": {
											"type": "number"
										}
									},
									"additionalProperties": false,
									"required": [
										"id",
										"name",
										"title",
										"physicalName",
										"status",
										"updatedAt"
									]
								}
							},
							"hasMore": {
								"type": "boolean",
								"description": "Keep paging while true; a short page does not mean the end."
							},
							"nextCursor": {
								"type": "string",
								"description": "Pass as cursor to fetch the next page."
							}
						},
						"additionalProperties": false,
						"required": ["tables", "hasMore"]
					},
					{
						"type": "object",
						"properties": {
							"type": {
								"type": "string",
								"const": "changes",
								"description": "Always `changes`"
							},
							"url": {
								"type": "string"
							},
							"start_time": {
								"type": "string",
								"description": "The start of the time range that was read."
							},
							"end_time": {
								"type": "string",
								"description": "The end of the time range that was read."
							},
							"authors": {
								"type": "array",
								"items": {
									"type": "object",
									"properties": {
										"url": {
											"type": "string"
										},
										"name": {
											"type": "string"
										}
									},
									"additionalProperties": false,
									"required": ["url", "name"]
								},
								"maxItems": 1000,
								"description": "The name of each person and agent named in contributors."
							},
							"changes": {
								"type": "array",
								"items": {
									"oneOf": [
										{
											"type": "object",
											"properties": {
												"type": {
													"type": "string",
													"const": "block",
													"description": "Always `block`"
												},
												"action": {
													"type": "string",
													"enum": ["added", "removed", "edited", "moved"],
													"description": "moved: the block moved to another parent on the page without other edits."
												},
												"contributors": {
													"type": "array",
													"items": {
														"type": "object",
														"properties": {
															"author": {
																"type": "string",
																"description": "user:// URL or agent URL. Missing for an integration that has no URL."
															},
															"source": {
																"type": "string",
																"enum": [
																	"notion_ai",
																	"custom_agent",
																	"mcp",
																	"database_automation"
																],
																"description": "What the change was made through. Missing when the author edited directly."
															},
															"source_name": {
																"type": "string",
																"description": "The agent, MCP client, or integration's name, such as \"Claude\"."
															},
															"source_url": {
																"type": "string",
																"description": "The custom agent's URL."
															},
															"triggered_by": {
																"type": "string",
																"description": "user:// URL of the person who asked an agent to make the change."
															}
														},
														"additionalProperties": false
													},
													"maxItems": 1000,
													"description": "Who changed this record, and how. One entry for each author and way of editing."
												},
												"first_edit_time": {
													"type": "string"
												},
												"last_edit_time": {
													"type": "string"
												},
												"before": {
													"type": "string",
													"description": "The block alone as Markdown, without its children. Missing when added or moved."
												},
												"after": {
													"type": "string",
													"description": "The block alone as Markdown, without its children. Missing when removed."
												},
												"truncated": {
													"type": "boolean",
													"description": "True when before or after was cut. A long edited block shows only the part that changed, with \"…\" where text was left out."
												}
											},
											"additionalProperties": false,
											"required": [
												"type",
												"action",
												"contributors",
												"first_edit_time",
												"last_edit_time"
											]
										},
										{
											"type": "object",
											"properties": {
												"type": {
													"type": "string",
													"const": "properties",
													"description": "Always `properties`"
												},
												"action": {
													"type": "string",
													"enum": ["added", "removed", "edited"],
													"description": "One of: `added`, `removed`, `edited`"
												},
												"title": {
													"type": "string",
													"description": "The page's title at the end of the range, or before it was removed."
												},
												"contributors": {
													"type": "array",
													"items": {
														"type": "object",
														"properties": {
															"author": {
																"type": "string",
																"description": "user:// URL or agent URL. Missing for an integration that has no URL."
															},
															"source": {
																"type": "string",
																"enum": [
																	"notion_ai",
																	"custom_agent",
																	"mcp",
																	"database_automation"
																],
																"description": "What the change was made through. Missing when the author edited directly."
															},
															"source_name": {
																"type": "string",
																"description": "The agent, MCP client, or integration's name, such as \"Claude\"."
															},
															"source_url": {
																"type": "string",
																"description": "The custom agent's URL."
															},
															"triggered_by": {
																"type": "string",
																"description": "user:// URL of the person who asked an agent to make the change."
															}
														},
														"additionalProperties": false
													},
													"maxItems": 1000,
													"description": "Who changed this record, and how. One entry for each author and way of editing."
												},
												"first_edit_time": {
													"type": "string"
												},
												"last_edit_time": {
													"type": "string"
												},
												"url": {
													"type": "string",
													"description": "The page. Missing when it is the result's page; set for a database's rows."
												},
												"data_source_url": {
													"type": "string",
													"description": "Set when the page is a row in a data source."
												},
												"before": {
													"type": "object",
													"additionalProperties": {
														"oneOf": [
															{
																"type": "string"
															},
															{
																"type": "number"
															},
															{
																"type": "boolean"
															},
															{
																"type": "array",
																"items": {
																	"type": "string"
																},
																"maxItems": 10000
															},
															{
																"type": "null"
															}
														]
													},
													"description": "Edited: only the properties that changed. Removed: all of them. Missing when added. A property missing on one side is null there."
												},
												"after": {
													"type": "object",
													"additionalProperties": {
														"oneOf": [
															{
																"type": "string"
															},
															{
																"type": "number"
															},
															{
																"type": "boolean"
															},
															{
																"type": "array",
																"items": {
																	"type": "string"
																},
																"maxItems": 10000
															},
															{
																"type": "null"
															}
														]
													},
													"description": "Edited: only the properties that changed. Added: all of them. Missing when removed."
												},
												"truncated": {
													"type": "boolean",
													"description": "True when before or after was cut. A long edited block shows only the part that changed, with \"…\" where text was left out."
												}
											},
											"additionalProperties": false,
											"required": [
												"type",
												"action",
												"title",
												"contributors",
												"first_edit_time",
												"last_edit_time"
											]
										},
										{
											"type": "object",
											"properties": {
												"type": {
													"type": "string",
													"const": "data_source",
													"description": "Always `data_source`"
												},
												"url": {
													"type": "string",
													"description": "collection:// URL."
												},
												"action": {
													"type": "string",
													"enum": ["added", "removed", "edited"],
													"description": "One of: `added`, `removed`, `edited`"
												},
												"contributors": {
													"type": "array",
													"items": {
														"type": "object",
														"properties": {
															"author": {
																"type": "string",
																"description": "user:// URL or agent URL. Missing for an integration that has no URL."
															},
															"source": {
																"type": "string",
																"enum": [
																	"notion_ai",
																	"custom_agent",
																	"mcp",
																	"database_automation"
																],
																"description": "What the change was made through. Missing when the author edited directly."
															},
															"source_name": {
																"type": "string",
																"description": "The agent, MCP client, or integration's name, such as \"Claude\"."
															},
															"source_url": {
																"type": "string",
																"description": "The custom agent's URL."
															},
															"triggered_by": {
																"type": "string",
																"description": "user:// URL of the person who asked an agent to make the change."
															}
														},
														"additionalProperties": false
													},
													"maxItems": 1000,
													"description": "Who changed this record, and how. One entry for each author and way of editing."
												},
												"first_edit_time": {
													"type": "string"
												},
												"last_edit_time": {
													"type": "string"
												},
												"before": {
													"type": "object",
													"additionalProperties": {},
													"description": "Edited: only the settings that changed. Removed: all of them. Missing when added. A setting missing on one side is null there. Changed schema properties are under schema, keyed by property URL."
												},
												"after": {
													"type": "object",
													"additionalProperties": {},
													"description": "Edited: only the settings that changed. Added: all of them. Missing when removed."
												},
												"truncated": {
													"type": "boolean",
													"description": "True when before or after was cut. A long edited block shows only the part that changed, with \"…\" where text was left out."
												}
											},
											"additionalProperties": false,
											"required": [
												"type",
												"url",
												"action",
												"contributors",
												"first_edit_time",
												"last_edit_time"
											]
										},
										{
											"type": "object",
											"properties": {
												"type": {
													"type": "string",
													"const": "view",
													"description": "Always `view`"
												},
												"url": {
													"type": "string",
													"description": "view:// URL."
												},
												"action": {
													"type": "string",
													"enum": ["added", "removed", "edited"],
													"description": "One of: `added`, `removed`, `edited`"
												},
												"data_source_url": {
													"type": "string",
													"description": "The data source the view shows."
												},
												"contributors": {
													"type": "array",
													"items": {
														"type": "object",
														"properties": {
															"author": {
																"type": "string",
																"description": "user:// URL or agent URL. Missing for an integration that has no URL."
															},
															"source": {
																"type": "string",
																"enum": [
																	"notion_ai",
																	"custom_agent",
																	"mcp",
																	"database_automation"
																],
																"description": "What the change was made through. Missing when the author edited directly."
															},
															"source_name": {
																"type": "string",
																"description": "The agent, MCP client, or integration's name, such as \"Claude\"."
															},
															"source_url": {
																"type": "string",
																"description": "The custom agent's URL."
															},
															"triggered_by": {
																"type": "string",
																"description": "user:// URL of the person who asked an agent to make the change."
															}
														},
														"additionalProperties": false
													},
													"maxItems": 1000,
													"description": "Who changed this record, and how. One entry for each author and way of editing."
												},
												"first_edit_time": {
													"type": "string"
												},
												"last_edit_time": {
													"type": "string"
												},
												"before": {
													"type": "object",
													"additionalProperties": {},
													"description": "Edited: only the settings that changed. Removed: all of them. Missing when added. A setting missing on one side is null there."
												},
												"after": {
													"type": "object",
													"additionalProperties": {},
													"description": "Edited: only the settings that changed. Added: all of them. Missing when removed."
												},
												"truncated": {
													"type": "boolean",
													"description": "True when before or after was cut. A long edited block shows only the part that changed, with \"…\" where text was left out."
												}
											},
											"additionalProperties": false,
											"required": [
												"type",
												"url",
												"action",
												"data_source_url",
												"contributors",
												"first_edit_time",
												"last_edit_time"
											]
										}
									]
								},
								"maxItems": 2000,
								"description": "What changed, newest first, until the output reaches its size limit. Each record that changed is listed once, with how it looked at the start and the end of the range."
							},
							"older_changes_end_time": {
								"type": "string",
								"description": "Set when this call did not read the whole range, because the changes did not fit or the range was longer than one call reads. Call get_version_changes again with this as end_time and the same start_time to read them; message names the exact call. Earlier edits to a listed record can appear again in the older range, showing its state at that time."
							},
							"inline_databases": {
								"type": "array",
								"items": {
									"type": "string"
								},
								"maxItems": 1000,
								"description": "URLs of the page's inline databases. Their changes are not listed; pass a url to get_version_changes to read them."
							},
							"message": {
								"type": "string",
								"description": "A note about the result to pass on to the user."
							}
						},
						"additionalProperties": false,
						"required": [
							"type",
							"url",
							"start_time",
							"end_time",
							"authors",
							"changes"
						]
					},
					{
						"type": "object",
						"properties": {
							"type": {
								"type": "string",
								"const": "unavailable",
								"description": "Always `unavailable`"
							},
							"reason": {
								"type": "string",
								"enum": ["plan_retention", "not_found", "too_large"],
								"description": "One of: `plan_retention`, `not_found`, `too_large`"
							},
							"message": {
								"type": "string"
							}
						},
						"additionalProperties": false,
						"required": ["type", "reason", "message"]
					},
					{
						"type": "object",
						"properties": {
							"type": {
								"type": "string",
								"const": "page",
								"description": "Always `page`"
							},
							"url": {
								"type": "string"
							},
							"properties": {
								"type": "object",
								"additionalProperties": {
									"oneOf": [
										{
											"type": "string"
										},
										{
											"type": "number"
										},
										{
											"type": "boolean"
										},
										{
											"type": "array",
											"items": {
												"type": "string"
											},
											"maxItems": 10000
										},
										{
											"type": "null"
										}
									]
								}
							},
							"content": {
								"type": "string",
								"description": "The page body as Markdown. Each inline database is a database tag; pass its url to view_version to read it."
							},
							"truncated": {
								"type": "boolean",
								"description": "True when the page was too long and its content was cut. The rest cannot be read yet."
							}
						},
						"additionalProperties": false,
						"required": ["type", "url", "properties", "content", "truncated"]
					},
					{
						"type": "object",
						"properties": {
							"type": {
								"type": "string",
								"const": "database",
								"description": "Always `database`"
							},
							"url": {
								"type": "string"
							},
							"configuration": {
								"type": "string",
								"description": "The database's data sources (schemas) and views at that time, as JSON."
							},
							"rows": {
								"type": "array",
								"items": {
									"type": "object",
									"properties": {
										"url": {
											"type": "string"
										},
										"properties": {
											"type": "object",
											"additionalProperties": {
												"oneOf": [
													{
														"type": "string"
													},
													{
														"type": "number"
													},
													{
														"type": "boolean"
													},
													{
														"type": "array",
														"items": {
															"type": "string"
														},
														"maxItems": 10000
													},
													{
														"type": "null"
													}
												]
											}
										},
										"data_source_url": {
											"type": "string",
											"description": "The row's data source. Set only when the database has more than one."
										}
									},
									"additionalProperties": false,
									"required": ["url", "properties"]
								},
								"maxItems": 200,
								"description": "The database's rows at that time, newest first by created time, as many as fit in one call. Pass a row's url to view_version to read its page."
							},
							"total_rows": {
								"type": "integer",
								"minimum": 0,
								"description": "How many rows the database had at that time, across all calls."
							},
							"next_cursor": {
								"type": "string",
								"description": "Set when the database has more rows. Call view_version again with the same page and time, and this as cursor."
							}
						},
						"additionalProperties": false,
						"required": ["type", "url", "configuration", "rows", "total_rows"]
					},
					{
						"type": "object",
						"properties": {
							"type": {
								"type": "string",
								"const": "unavailable",
								"description": "Always `unavailable`"
							},
							"reason": {
								"type": "string",
								"enum": ["plan_retention", "not_found", "too_large"],
								"description": "One of: `plan_retention`, `not_found`, `too_large`"
							},
							"message": {
								"type": "string"
							}
						},
						"additionalProperties": false,
						"required": ["type", "reason", "message"]
					},
					{
						"type": "object",
						"properties": {
							"status": {
								"type": "string",
								"const": "started",
								"description": "The restore started and runs in the background."
							},
							"started_at": {
								"type": "string",
								"description": "When the restore started, as an ISO 8601 time. Restoring the page to this time undoes the restore."
							},
							"message": {
								"type": "string"
							}
						},
						"additionalProperties": false,
						"required": ["status", "started_at", "message"]
					},
					{
						"type": "object",
						"properties": {
							"backlinks": {
								"type": "array",
								"items": {
									"type": "object",
									"properties": {
										"type": {
											"type": "string",
											"enum": [
												"page_mention",
												"link_to_page",
												"property_mention",
												"comment_mention"
											],
											"description": "How the source mentions the page."
										},
										"source": {
											"type": "object",
											"properties": {
												"id": {
													"type": "string",
													"description": "Page ID."
												},
												"url": {
													"type": "string",
													"description": "Page URL."
												},
												"title": {
													"type": "string",
													"description": "Page title."
												},
												"last_edited_time": {
													"type": "string",
													"description": "When the page was last edited (ISO 8601)."
												}
											},
											"additionalProperties": false,
											"required": ["id", "url", "title", "last_edited_time"],
											"description": "The page that holds the mention."
										},
										"block_id": {
											"type": "string",
											"description": "Block in the source page that holds the mention."
										},
										"comment_id": {
											"type": "string",
											"description": "Comment that holds the mention."
										},
										"property": {
											"type": "object",
											"properties": {
												"id": {
													"type": "string",
													"description": "Property ID."
												},
												"name": {
													"type": "string",
													"description": "Property name."
												}
											},
											"additionalProperties": false,
											"required": ["id", "name"],
											"description": "Database property that holds the mention."
										}
									},
									"additionalProperties": false,
									"required": ["type", "source"]
								},
								"maxItems": 100,
								"description": "Backlinks you can open, at most one per page and type."
							},
							"next_cursor": {
								"type": "string",
								"description": "Pass as cursor to get more. Absent when there are no more."
							}
						},
						"additionalProperties": false,
						"required": ["backlinks"]
					},
					{
						"type": "object",
						"properties": {
							"bookmark": {
								"type": "object",
								"properties": {
									"timestamp": {
										"type": "string"
									},
									"timestamp_ms": {
										"type": "number"
									},
									"created_at": {
										"type": "string"
									},
									"created_by": {
										"type": "string"
									},
									"name": {
										"type": "string"
									}
								},
								"additionalProperties": false,
								"required": [
									"timestamp",
									"timestamp_ms",
									"created_at",
									"created_by"
								]
							},
							"created": {
								"type": "boolean"
							}
						},
						"additionalProperties": false,
						"required": ["bookmark", "created"]
					},
					{
						"type": "object",
						"properties": {
							"bookmarks": {
								"type": "array",
								"items": {
									"type": "object",
									"properties": {
										"timestamp": {
											"type": "string"
										},
										"timestamp_ms": {
											"type": "number"
										},
										"created_at": {
											"type": "string"
										},
										"created_by": {
											"type": "string"
										},
										"name": {
											"type": "string"
										}
									},
									"additionalProperties": false,
									"required": [
										"timestamp",
										"timestamp_ms",
										"created_at",
										"created_by"
									]
								},
								"maxItems": 1000
							}
						},
						"additionalProperties": false,
						"required": ["bookmarks"]
					},
					{
						"type": "object",
						"properties": {
							"deleted": {
								"type": "boolean"
							},
							"timestamp_ms": {
								"type": "number"
							}
						},
						"additionalProperties": false,
						"required": ["deleted", "timestamp_ms"]
					},
					{
						"type": "object",
						"properties": {
							"page_id": {
								"$ref": "#/components/schemas/idResponse",
								"description": "The page the notification level was applied to, as a dashed UUID."
							},
							"level": {
								"type": "string",
								"enum": ["all", "important", "comments", "none"],
								"description": "The notification level now stored for the calling user on this page."
							}
						},
						"additionalProperties": false,
						"required": ["page_id", "level"]
					},
					{
						"type": "object",
						"properties": {
							"page_urls": {
								"type": "array",
								"items": {
									"type": "string"
								},
								"maxItems": 100,
								"minItems": 1,
								"description": "Notion page or database URLs to favorite or unfavorite, in order."
							},
							"favorited": {
								"type": "boolean",
								"description": "true to favorite these pages; false to unfavorite them."
							},
							"position": {
								"oneOf": [
									{
										"type": "object",
										"properties": {
											"type": {
												"type": "string",
												"const": "start",
												"description": "Always `start`"
											}
										},
										"additionalProperties": false,
										"required": ["type"]
									},
									{
										"type": "object",
										"properties": {
											"type": {
												"type": "string",
												"const": "end",
												"description": "Always `end`"
											}
										},
										"additionalProperties": false,
										"required": ["type"]
									},
									{
										"type": "object",
										"properties": {
											"type": {
												"type": "string",
												"const": "after_page",
												"description": "Always `after_page`"
											},
											"page_url": {
												"type": "string",
												"description": "URL of a current favorite. The pages go right after it."
											}
										},
										"additionalProperties": false,
										"required": ["type", "page_url"]
									}
								],
								"description": "Where to put the pages, in input order: start, end, or after_page (right after another favorite). Moves pages that are already favorites. Only valid when favorited is true. Without it, new favorites go to the top and existing favorites stay where they are."
							}
						},
						"additionalProperties": false,
						"required": ["page_urls", "favorited"]
					},
					{
						"required": ["accounts"],
						"properties": {
							"accounts": {
								"type": "array",
								"items": {
									"description": "An account the user connected to Notion Calendar",
									"required": [
										"accountId",
										"calendars",
										"capabilities",
										"providerName"
									],
									"properties": {
										"accountId": {
											"type": "string"
										},
										"providerName": {
											"description": "Google, Apple iCloud, Outlook, etc.",
											"type": "string"
										},
										"email": {
											"description": "The user email associated with this account. Useful to know if this account and its data should be used depending on context.",
											"type": "string"
										},
										"category": {
											"description": "Whether this account is work-related or a personal account, if we know this information.",
											"enum": ["work", "personal"],
											"type": "string"
										},
										"capabilities": {
											"required": [
												"readCalendars",
												"readEvents",
												"writeEvents",
												"searchEvents",
												"readContacts"
											],
											"properties": {
												"readCalendars": {
													"description": "Does this account expose any calendars?",
													"type": "boolean"
												},
												"readEvents": {
													"description": "Can we read calendar events from calendars of this account?",
													"type": "boolean"
												},
												"writeEvents": {
													"description": "Can we write events in some calendars of this account? Calendars themselves might have their own set of restrictions.",
													"type": "boolean"
												},
												"searchEvents": {
													"description": "Can we use a text search query to find events in the calendars of this account?",
													"type": "boolean"
												},
												"readContacts": {
													"description": "Does this account expose contacts?",
													"type": "boolean"
												}
											},
											"type": "object"
										},
										"coworkersEmailDomains": {
											"description": "User can access the events of co-workers having an email address with one of these domains",
											"type": "array",
											"items": {
												"type": "string"
											}
										},
										"calendars": {
											"type": "array",
											"items": {
												"required": [
													"accountId",
													"calendarId",
													"isHidden",
													"isPrimary",
													"isReadOnly",
													"isSelected",
													"name"
												],
												"properties": {
													"accountId": {
														"type": "string"
													},
													"calendarId": {
														"type": "string"
													},
													"name": {
														"type": "string"
													},
													"description": {
														"type": "string"
													},
													"colors": {
														"properties": {
															"foreground": {
																"type": "string"
															},
															"background": {
																"type": "string"
															}
														},
														"type": "object"
													},
													"isPrimary": {
														"type": "boolean"
													},
													"isReadOnly": {
														"description": "Is this calendar read-only or can the user create/edit/delete events?",
														"type": "boolean"
													},
													"isSelected": {
														"description": "The contents of a calendar appear in the user calendar app only if that calendar is selected.\nCalendars that are not selected might be useful to get lower-signal events, but probably not to create events as it might not be visible to the user.",
														"type": "boolean"
													},
													"isHidden": {
														"description": "A hidden calendar is a calendar the user has access to but decided to hide completely from their calendar app.\nHidden calendars might be useful to know what you might have access to, but keep in mind the user hid them and is most likely not aware of their content.",
														"type": "boolean"
													},
													"ownerEmail": {
														"description": "The email address of the owner of this calendar.",
														"type": "string"
													}
												},
												"type": "object"
											}
										}
									},
									"type": "object"
								}
							}
						},
						"type": "object"
					},
					{
						"required": ["accounts", "userPreferences", "errors"],
						"properties": {
							"accounts": {
								"type": "array",
								"items": {
									"description": "An account the user connected to Notion Calendar",
									"required": [
										"accountId",
										"calendars",
										"capabilities",
										"providerName"
									],
									"properties": {
										"accountId": {
											"type": "string"
										},
										"providerName": {
											"description": "Google, Apple iCloud, Outlook, etc.",
											"type": "string"
										},
										"email": {
											"description": "The user email associated with this account. Useful to know if this account and its data should be used depending on context.",
											"type": "string"
										},
										"category": {
											"description": "Whether this account is work-related or a personal account, if we know this information.",
											"enum": ["work", "personal"],
											"type": "string"
										},
										"capabilities": {
											"required": [
												"readCalendars",
												"readEvents",
												"writeEvents",
												"searchEvents",
												"readContacts"
											],
											"properties": {
												"readCalendars": {
													"description": "Does this account expose any calendars?",
													"type": "boolean"
												},
												"readEvents": {
													"description": "Can we read calendar events from calendars of this account?",
													"type": "boolean"
												},
												"writeEvents": {
													"description": "Can we write events in some calendars of this account? Calendars themselves might have their own set of restrictions.",
													"type": "boolean"
												},
												"searchEvents": {
													"description": "Can we use a text search query to find events in the calendars of this account?",
													"type": "boolean"
												},
												"readContacts": {
													"description": "Does this account expose contacts?",
													"type": "boolean"
												}
											},
											"type": "object"
										},
										"coworkersEmailDomains": {
											"description": "User can access the events of co-workers having an email address with one of these domains",
											"type": "array",
											"items": {
												"type": "string"
											}
										},
										"calendars": {
											"type": "array",
											"items": {
												"required": [
													"accountId",
													"calendarId",
													"events",
													"isHidden",
													"isPrimary",
													"isReadOnly",
													"isSelected",
													"name"
												],
												"properties": {
													"accountId": {
														"type": "string"
													},
													"calendarId": {
														"type": "string"
													},
													"name": {
														"type": "string"
													},
													"description": {
														"type": "string"
													},
													"colors": {
														"properties": {
															"foreground": {
																"type": "string"
															},
															"background": {
																"type": "string"
															}
														},
														"type": "object"
													},
													"isPrimary": {
														"type": "boolean"
													},
													"isReadOnly": {
														"description": "Is this calendar read-only or can the user create/edit/delete events?",
														"type": "boolean"
													},
													"isSelected": {
														"description": "The contents of a calendar appear in the user calendar app only if that calendar is selected.\nCalendars that are not selected might be useful to get lower-signal events, but probably not to create events as it might not be visible to the user.",
														"type": "boolean"
													},
													"isHidden": {
														"description": "A hidden calendar is a calendar the user has access to but decided to hide completely from their calendar app.\nHidden calendars might be useful to know what you might have access to, but keep in mind the user hid them and is most likely not aware of their content.",
														"type": "boolean"
													},
													"ownerEmail": {
														"description": "The email address of the owner of this calendar.",
														"type": "string"
													},
													"events": {
														"type": "array",
														"items": {
															"required": [
																"calendar",
																"eventId",
																"summary",
																"webUrl",
																"period",
																"isRecurring",
																"isTransparent",
																"isAutoBlock",
																"isMeeting"
															],
															"properties": {
																"calendar": {
																	"required": ["accountId", "calendarId"],
																	"properties": {
																		"accountId": {
																			"type": "string"
																		},
																		"calendarId": {
																			"type": "string"
																		}
																	},
																	"type": "object"
																},
																"eventId": {
																	"type": "string"
																},
																"summary": {
																	"minLength": 1,
																	"type": "string"
																},
																"description": {
																	"type": "string"
																},
																"location": {
																	"description": "Physical location where the event takes place, or remote conference link/info.",
																	"type": "string"
																},
																"recurrenceRules": {
																	"description": "Recurrence rules in RRULE format (e.g., ['RRULE:FREQ=WEEKLY;COUNT=10']). Can also include EXDATE for exception dates (e.g., ['RRULE:FREQ=WEEKLY;COUNT=10', 'EXDATE:2026-03-24T13:00:00']).",
																	"type": "array",
																	"items": {
																		"type": "string"
																	}
																},
																"provider": {
																	"description": "The data provider this event belongs to",
																	"enum": [
																		"google",
																		"notion",
																		"icloud",
																		"outlook"
																	],
																	"type": "string"
																},
																"webUrl": {
																	"description": "The URL to view the event in the Calendar app.",
																	"format": "uri",
																	"type": "string"
																},
																"period": {
																	"description": "When the event is happening",
																	"oneOf": [
																		{
																			"description": "A date-only period, denoting an all-day event. Property `type` must be set to the exact string \"DATE\"",
																			"required": ["type", "start", "end"],
																			"properties": {
																				"type": {
																					"const": "DATE",
																					"type": "string"
																				},
																				"start": {
																					"required": ["date"],
																					"properties": {
																						"date": {
																							"description": "Date in ISO 8601 format (no time)",
																							"format": "date",
																							"type": "string"
																						}
																					},
																					"type": "object"
																				},
																				"end": {
																					"required": ["date"],
																					"properties": {
																						"date": {
																							"description": "Date in ISO 8601 format (no time)",
																							"format": "date",
																							"type": "string"
																						}
																					},
																					"type": "object"
																				}
																			},
																			"type": "object"
																		},
																		{
																			"description": "A date-time period, denoting an time-bound event (can span multiple days). Property `type` must be set to the exact string \"DATE_TIME\"",
																			"required": ["type", "start", "end"],
																			"properties": {
																				"type": {
																					"const": "DATE_TIME",
																					"type": "string"
																				},
																				"start": {
																					"required": ["dateTime"],
																					"example": {
																						"dateTime": "2025-04-30T12:09:00.000-05:00",
																						"timeZone": "America/Chicago"
																					},
																					"properties": {
																						"dateTime": {
																							"description": "Date-time in ISO 8601 format, in UTC (ending with Z), or with TZ offset",
																							"format": "date-time",
																							"type": "string"
																						},
																						"timeZone": {
																							"type": "string"
																						}
																					},
																					"type": "object"
																				},
																				"end": {
																					"required": ["dateTime"],
																					"example": {
																						"dateTime": "2025-04-30T12:09:00.000-05:00",
																						"timeZone": "America/Chicago"
																					},
																					"properties": {
																						"dateTime": {
																							"description": "Date-time in ISO 8601 format, in UTC (ending with Z), or with TZ offset",
																							"format": "date-time",
																							"type": "string"
																						},
																						"timeZone": {
																							"type": "string"
																						}
																					},
																					"type": "object"
																				}
																			},
																			"type": "object"
																		}
																	],
																	"type": "object"
																},
																"isRecurring": {
																	"description": "Whether it's part of a recurring event series",
																	"type": "boolean"
																},
																"isTransparent": {
																	"description": "If true, the event does not block time on the calendar. This is equivalent to setting `Show me as to Available` in the Calendar UI.",
																	"type": "boolean"
																},
																"isAutoBlock": {
																	"description": "Is the event an auto-blocking event created from another event? Used to create blocked events on a calendar from events on another calendar. You can ignore auto-blocked events if there are events happening at the exact same time on other calendars.",
																	"type": "boolean"
																},
																"eventType": {
																	"description": "What kind of event is it? Standard, out of office, birthday...",
																	"enum": [
																		"fromGmail",
																		"default",
																		"focusTime",
																		"outOfOffice",
																		"birthday",
																		"availability"
																	],
																	"type": "string"
																},
																"eventStatus": {
																	"description": "Is an event confirmed, tentative or cancelled? This is different from the user's RSVP",
																	"enum": [
																		"confirmed",
																		"tentative",
																		"cancelled"
																	],
																	"type": "string"
																},
																"isMeeting": {
																	"description": "Whether it's a meeting, aka an event with attendees listed",
																	"type": "boolean"
																},
																"conferencingEntryPoints": {
																	"type": "array",
																	"items": {
																		"required": ["uri"],
																		"properties": {
																			"uri": {
																				"type": "string"
																			},
																			"accessCode": {
																				"type": "string"
																			},
																			"entryPointType": {
																				"enum": [
																					"video",
																					"phone",
																					"sip",
																					"more"
																				],
																				"type": "string"
																			},
																			"label": {
																				"type": "string"
																			},
																			"meetingCode": {
																				"type": "string"
																			},
																			"passcode": {
																				"type": "string"
																			},
																			"password": {
																				"type": "string"
																			},
																			"pin": {
																				"type": "string"
																			},
																			"notes": {
																				"type": "string"
																			},
																			"signature": {
																				"type": "string"
																			}
																		},
																		"type": "object"
																	}
																},
																"conferencingUrl": {
																	"description": "The URL to join the video conference, if available",
																	"format": "uri",
																	"type": "string"
																},
																"responseStatus": {
																	"description": "The calendar user's RSVP status",
																	"enum": [
																		"needsAction",
																		"accepted",
																		"declined",
																		"tentative"
																	],
																	"type": "string"
																},
																"creator": {
																	"required": ["isSelf"],
																	"properties": {
																		"isSelf": {
																			"description": "Whether this entry represents the calendar user",
																			"type": "boolean"
																		},
																		"displayName": {
																			"type": "string"
																		},
																		"email": {
																			"type": "string"
																		}
																	},
																	"type": "object"
																},
																"organizer": {
																	"required": ["isSelf"],
																	"properties": {
																		"isSelf": {
																			"description": "Whether this entry represents the calendar user",
																			"type": "boolean"
																		},
																		"displayName": {
																			"type": "string"
																		},
																		"email": {
																			"type": "string"
																		}
																	},
																	"type": "object"
																},
																"attendees": {
																	"type": "array",
																	"items": {
																		"required": ["isOptional", "isSelf"],
																		"properties": {
																			"isSelf": {
																				"description": "Whether this entry represents the calendar user",
																				"type": "boolean"
																			},
																			"displayName": {
																				"type": "string"
																			},
																			"email": {
																				"type": "string"
																			},
																			"isOptional": {
																				"type": "boolean"
																			},
																			"isOrganizer": {
																				"type": "boolean"
																			},
																			"responseStatus": {
																				"description": "The calendar user's RSVP status",
																				"enum": [
																					"needsAction",
																					"accepted",
																					"declined",
																					"tentative"
																				],
																				"type": "string"
																			}
																		},
																		"type": "object"
																	}
																},
																"resources": {
																	"type": "array",
																	"items": {
																		"required": ["isOptional"],
																		"properties": {
																			"displayName": {
																				"type": "string"
																			},
																			"email": {
																				"type": "string"
																			},
																			"isOptional": {
																				"type": "boolean"
																			},
																			"responseStatus": {
																				"description": "The calendar user's RSVP status",
																				"enum": [
																					"needsAction",
																					"accepted",
																					"declined",
																					"tentative"
																				],
																				"type": "string"
																			}
																		},
																		"type": "object"
																	}
																},
																"colors": {
																	"properties": {
																		"foreground": {
																			"type": "string"
																		},
																		"background": {
																			"type": "string"
																		}
																	},
																	"type": "object"
																},
																"attachments": {
																	"type": "array",
																	"items": {
																		"required": ["url"],
																		"properties": {
																			"url": {
																				"format": "uri",
																				"type": "string"
																			},
																			"mimeType": {
																				"type": "string"
																			},
																			"title": {
																				"type": "string"
																			},
																			"notionWorkspaceId": {
																				"type": "string"
																			}
																		},
																		"type": "object"
																	}
																}
															},
															"type": "object"
														}
													}
												},
												"type": "object"
											}
										}
									},
									"type": "object"
								}
							},
							"userPreferences": {
								"description": "User preferences for calendar data",
								"properties": {
									"timeFormat": {
										"description": "Whether the user prefers to display time in 12-hour (AM/PM) or 24-hour format",
										"enum": ["12_HOUR", "24_HOUR"],
										"type": "string"
									}
								},
								"type": "object"
							},
							"errors": {
								"type": "array",
								"items": {
									"required": ["accountId", "calendarId", "error"],
									"properties": {
										"accountId": {
											"type": "string"
										},
										"calendarId": {
											"type": "string"
										},
										"error": {
											"type": "string"
										}
									},
									"type": "object"
								}
							}
						},
						"type": "object"
					},
					{
						"required": ["suggestions", "usedFlexibleDuration"],
						"properties": {
							"suggestions": {
								"description": "Ranked list of available meeting time slots, sorted from most to least preferable. Each slot includes start/end times and categorizes participants by availability status.",
								"type": "array",
								"items": {
									"required": [
										"startAt",
										"endAt",
										"hardEventConflictCount",
										"softEventConflictCount",
										"unavailableParticipants",
										"availableParticipants",
										"softConflictParticipants",
										"unknownStatus",
										"conflictingEvents"
									],
									"properties": {
										"startAt": {
											"description": "Start time in ISO 8601 format",
											"type": "string"
										},
										"endAt": {
											"description": "End time in ISO 8601 format",
											"type": "string"
										},
										"hardEventConflictCount": {
											"description": "Total number of hard event conflicts, including multiple events for one participant",
											"minimum": 0,
											"maximum": 9007199254740991,
											"type": "integer"
										},
										"softEventConflictCount": {
											"description": "Total number of soft event conflicts, including multiple events for one participant",
											"minimum": 0,
											"maximum": 9007199254740991,
											"type": "integer"
										},
										"unavailableParticipants": {
											"description": "Participant emails for invitees with conflicts with this meeting time",
											"type": "array",
											"items": {
												"type": "string"
											}
										},
										"availableParticipants": {
											"description": "Participant emails for invitees who are available for this meeting time",
											"type": "array",
											"items": {
												"type": "string"
											}
										},
										"softConflictParticipants": {
											"description": "Participant emails for invitees with overlapping events whose RSVP is not firm yet",
											"type": "array",
											"items": {
												"type": "string"
											}
										},
										"unknownStatus": {
											"description": "Participant emails for invitees with unknown status",
											"type": "array",
											"items": {
												"type": "string"
											}
										},
										"conflictingEvents": {
											"description": "Readable participant events that overlap this meeting time, including the participant and whether each event creates a hard or soft conflict",
											"type": "array",
											"items": {
												"required": [
													"participantEmail",
													"eventId",
													"eventType",
													"conflictType"
												],
												"properties": {
													"participantEmail": {
														"type": "string"
													},
													"eventId": {
														"type": "string"
													},
													"summary": {
														"type": "string"
													},
													"eventType": {
														"description": "What kind of event is it? Standard, out of office, birthday...",
														"enum": [
															"fromGmail",
															"default",
															"focusTime",
															"outOfOffice",
															"birthday",
															"availability"
														],
														"type": "string"
													},
													"responseStatus": {
														"description": "The calendar user's RSVP status",
														"enum": [
															"needsAction",
															"accepted",
															"declined",
															"tentative"
														],
														"type": "string"
													},
													"conflictType": {
														"enum": ["hard", "soft"],
														"type": "string"
													}
												},
												"type": "object"
											}
										}
									},
									"type": "object"
								}
							},
							"usedFlexibleDuration": {
								"description": "Whether one or more suggestions use a shorter duration than requested because no sufficiently conflict-free times were available at the requested duration",
								"type": "boolean"
							},
							"participantSchedules": {
								"description": "List of participant schedules, one for each individual participant, including resolved group members. Each schedule includes basic participant information and a list of the participant's calendar events.",
								"type": "array",
								"items": {
									"required": ["accountId", "coworkerEmail", "events"],
									"properties": {
										"accountId": {
											"type": "string"
										},
										"coworkerEmail": {
											"type": "string"
										},
										"profile": {
											"properties": {
												"displayName": {
													"type": "string"
												},
												"email": {
													"type": "string"
												},
												"photoUrl": {
													"type": "string"
												}
											},
											"type": "object"
										},
										"events": {
											"type": "array",
											"items": {
												"required": [
													"eventId",
													"summary",
													"period",
													"isTransparent",
													"isMeeting"
												],
												"properties": {
													"eventId": {
														"type": "string"
													},
													"eventType": {
														"description": "What kind of event is it? Standard, out of office, birthday...",
														"enum": [
															"fromGmail",
															"default",
															"focusTime",
															"outOfOffice",
															"birthday",
															"availability"
														],
														"type": "string"
													},
													"eventStatus": {
														"description": "Is an event confirmed, tentative or cancelled? This is different from the user's RSVP",
														"enum": ["confirmed", "tentative", "cancelled"],
														"type": "string"
													},
													"summary": {
														"minLength": 1,
														"type": "string"
													},
													"period": {
														"description": "When the event is happening",
														"oneOf": [
															{
																"description": "A date-only period, denoting an all-day event. Property `type` must be set to the exact string \"DATE\"",
																"required": ["type", "start", "end"],
																"properties": {
																	"type": {
																		"const": "DATE",
																		"type": "string"
																	},
																	"start": {
																		"required": ["date"],
																		"properties": {
																			"date": {
																				"description": "Date in ISO 8601 format (no time)",
																				"format": "date",
																				"type": "string"
																			}
																		},
																		"type": "object"
																	},
																	"end": {
																		"required": ["date"],
																		"properties": {
																			"date": {
																				"description": "Date in ISO 8601 format (no time)",
																				"format": "date",
																				"type": "string"
																			}
																		},
																		"type": "object"
																	}
																},
																"type": "object"
															},
															{
																"description": "A date-time period, denoting an time-bound event (can span multiple days). Property `type` must be set to the exact string \"DATE_TIME\"",
																"required": ["type", "start", "end"],
																"properties": {
																	"type": {
																		"const": "DATE_TIME",
																		"type": "string"
																	},
																	"start": {
																		"required": ["dateTime"],
																		"example": {
																			"dateTime": "2025-04-30T12:09:00.000-05:00",
																			"timeZone": "America/Chicago"
																		},
																		"properties": {
																			"dateTime": {
																				"description": "Date-time in ISO 8601 format, in UTC (ending with Z), or with TZ offset",
																				"format": "date-time",
																				"type": "string"
																			},
																			"timeZone": {
																				"type": "string"
																			}
																		},
																		"type": "object"
																	},
																	"end": {
																		"required": ["dateTime"],
																		"example": {
																			"dateTime": "2025-04-30T12:09:00.000-05:00",
																			"timeZone": "America/Chicago"
																		},
																		"properties": {
																			"dateTime": {
																				"description": "Date-time in ISO 8601 format, in UTC (ending with Z), or with TZ offset",
																				"format": "date-time",
																				"type": "string"
																			},
																			"timeZone": {
																				"type": "string"
																			}
																		},
																		"type": "object"
																	}
																},
																"type": "object"
															}
														],
														"type": "object"
													},
													"responseStatus": {
														"description": "The calendar user's RSVP status",
														"enum": [
															"needsAction",
															"accepted",
															"declined",
															"tentative"
														],
														"type": "string"
													},
													"colors": {
														"properties": {
															"foreground": {
																"type": "string"
															},
															"background": {
																"type": "string"
															}
														},
														"type": "object"
													},
													"isTransparent": {
														"description": "If true, the event does not block time on the calendar. This is equivalent to setting `Show me as to Available` in the Calendar UI.",
														"type": "boolean"
													},
													"isMeeting": {
														"description": "Whether it's a meeting, aka an event with attendees listed",
														"type": "boolean"
													}
												},
												"type": "object"
											}
										}
									},
									"type": "object"
								}
							},
							"errors": {
								"type": "array",
								"items": {
									"required": ["identifier", "errorMessage"],
									"properties": {
										"identifier": {
											"description": "An identifier for the item that failed (e.g., event summary for creation, event ID for updates/cancellations)",
											"type": "string"
										},
										"errorMessage": {
											"description": "Description of the error that occurred",
											"type": "string"
										}
									},
									"type": "object"
								}
							}
						},
						"type": "object"
					},
					{
						"required": ["coworkers"],
						"properties": {
							"coworkers": {
								"description": "List of coworkers with their scheduled calendar events. Some coworkers may be excluded if their calendar could not be accessed.",
								"type": "array",
								"items": {
									"required": ["accountId", "coworkerEmail", "events"],
									"properties": {
										"accountId": {
											"type": "string"
										},
										"coworkerEmail": {
											"type": "string"
										},
										"profile": {
											"properties": {
												"displayName": {
													"type": "string"
												},
												"email": {
													"type": "string"
												},
												"photoUrl": {
													"type": "string"
												}
											},
											"type": "object"
										},
										"events": {
											"type": "array",
											"items": {
												"required": [
													"calendar",
													"eventId",
													"summary",
													"webUrl",
													"period",
													"isRecurring",
													"isTransparent",
													"isAutoBlock",
													"isMeeting"
												],
												"properties": {
													"calendar": {
														"required": ["accountId", "calendarId"],
														"properties": {
															"accountId": {
																"type": "string"
															},
															"calendarId": {
																"type": "string"
															}
														},
														"type": "object"
													},
													"eventId": {
														"type": "string"
													},
													"summary": {
														"minLength": 1,
														"type": "string"
													},
													"description": {
														"type": "string"
													},
													"location": {
														"description": "Physical location where the event takes place, or remote conference link/info.",
														"type": "string"
													},
													"recurrenceRules": {
														"description": "Recurrence rules in RRULE format (e.g., ['RRULE:FREQ=WEEKLY;COUNT=10']). Can also include EXDATE for exception dates (e.g., ['RRULE:FREQ=WEEKLY;COUNT=10', 'EXDATE:2026-03-24T13:00:00']).",
														"type": "array",
														"items": {
															"type": "string"
														}
													},
													"provider": {
														"description": "The data provider this event belongs to",
														"enum": ["google", "notion", "icloud", "outlook"],
														"type": "string"
													},
													"webUrl": {
														"description": "The URL to view the event in the Calendar app.",
														"format": "uri",
														"type": "string"
													},
													"period": {
														"description": "When the event is happening",
														"oneOf": [
															{
																"description": "A date-only period, denoting an all-day event. Property `type` must be set to the exact string \"DATE\"",
																"required": ["type", "start", "end"],
																"properties": {
																	"type": {
																		"const": "DATE",
																		"type": "string"
																	},
																	"start": {
																		"required": ["date"],
																		"properties": {
																			"date": {
																				"description": "Date in ISO 8601 format (no time)",
																				"format": "date",
																				"type": "string"
																			}
																		},
																		"type": "object"
																	},
																	"end": {
																		"required": ["date"],
																		"properties": {
																			"date": {
																				"description": "Date in ISO 8601 format (no time)",
																				"format": "date",
																				"type": "string"
																			}
																		},
																		"type": "object"
																	}
																},
																"type": "object"
															},
															{
																"description": "A date-time period, denoting an time-bound event (can span multiple days). Property `type` must be set to the exact string \"DATE_TIME\"",
																"required": ["type", "start", "end"],
																"properties": {
																	"type": {
																		"const": "DATE_TIME",
																		"type": "string"
																	},
																	"start": {
																		"required": ["dateTime"],
																		"example": {
																			"dateTime": "2025-04-30T12:09:00.000-05:00",
																			"timeZone": "America/Chicago"
																		},
																		"properties": {
																			"dateTime": {
																				"description": "Date-time in ISO 8601 format, in UTC (ending with Z), or with TZ offset",
																				"format": "date-time",
																				"type": "string"
																			},
																			"timeZone": {
																				"type": "string"
																			}
																		},
																		"type": "object"
																	},
																	"end": {
																		"required": ["dateTime"],
																		"example": {
																			"dateTime": "2025-04-30T12:09:00.000-05:00",
																			"timeZone": "America/Chicago"
																		},
																		"properties": {
																			"dateTime": {
																				"description": "Date-time in ISO 8601 format, in UTC (ending with Z), or with TZ offset",
																				"format": "date-time",
																				"type": "string"
																			},
																			"timeZone": {
																				"type": "string"
																			}
																		},
																		"type": "object"
																	}
																},
																"type": "object"
															}
														],
														"type": "object"
													},
													"isRecurring": {
														"description": "Whether it's part of a recurring event series",
														"type": "boolean"
													},
													"isTransparent": {
														"description": "If true, the event does not block time on the calendar. This is equivalent to setting `Show me as to Available` in the Calendar UI.",
														"type": "boolean"
													},
													"isAutoBlock": {
														"description": "Is the event an auto-blocking event created from another event? Used to create blocked events on a calendar from events on another calendar. You can ignore auto-blocked events if there are events happening at the exact same time on other calendars.",
														"type": "boolean"
													},
													"eventType": {
														"description": "What kind of event is it? Standard, out of office, birthday...",
														"enum": [
															"fromGmail",
															"default",
															"focusTime",
															"outOfOffice",
															"birthday",
															"availability"
														],
														"type": "string"
													},
													"eventStatus": {
														"description": "Is an event confirmed, tentative or cancelled? This is different from the user's RSVP",
														"enum": ["confirmed", "tentative", "cancelled"],
														"type": "string"
													},
													"isMeeting": {
														"description": "Whether it's a meeting, aka an event with attendees listed",
														"type": "boolean"
													},
													"conferencingEntryPoints": {
														"type": "array",
														"items": {
															"required": ["uri"],
															"properties": {
																"uri": {
																	"type": "string"
																},
																"accessCode": {
																	"type": "string"
																},
																"entryPointType": {
																	"enum": ["video", "phone", "sip", "more"],
																	"type": "string"
																},
																"label": {
																	"type": "string"
																},
																"meetingCode": {
																	"type": "string"
																},
																"passcode": {
																	"type": "string"
																},
																"password": {
																	"type": "string"
																},
																"pin": {
																	"type": "string"
																},
																"notes": {
																	"type": "string"
																},
																"signature": {
																	"type": "string"
																}
															},
															"type": "object"
														}
													},
													"conferencingUrl": {
														"description": "The URL to join the video conference, if available",
														"format": "uri",
														"type": "string"
													},
													"responseStatus": {
														"description": "The calendar user's RSVP status",
														"enum": [
															"needsAction",
															"accepted",
															"declined",
															"tentative"
														],
														"type": "string"
													},
													"creator": {
														"required": ["isSelf"],
														"properties": {
															"isSelf": {
																"description": "Whether this entry represents the calendar user",
																"type": "boolean"
															},
															"displayName": {
																"type": "string"
															},
															"email": {
																"type": "string"
															}
														},
														"type": "object"
													},
													"organizer": {
														"required": ["isSelf"],
														"properties": {
															"isSelf": {
																"description": "Whether this entry represents the calendar user",
																"type": "boolean"
															},
															"displayName": {
																"type": "string"
															},
															"email": {
																"type": "string"
															}
														},
														"type": "object"
													},
													"attendees": {
														"type": "array",
														"items": {
															"required": ["isOptional", "isSelf"],
															"properties": {
																"isSelf": {
																	"description": "Whether this entry represents the calendar user",
																	"type": "boolean"
																},
																"displayName": {
																	"type": "string"
																},
																"email": {
																	"type": "string"
																},
																"isOptional": {
																	"type": "boolean"
																},
																"isOrganizer": {
																	"type": "boolean"
																},
																"responseStatus": {
																	"description": "The calendar user's RSVP status",
																	"enum": [
																		"needsAction",
																		"accepted",
																		"declined",
																		"tentative"
																	],
																	"type": "string"
																}
															},
															"type": "object"
														}
													},
													"resources": {
														"type": "array",
														"items": {
															"required": ["isOptional"],
															"properties": {
																"displayName": {
																	"type": "string"
																},
																"email": {
																	"type": "string"
																},
																"isOptional": {
																	"type": "boolean"
																},
																"responseStatus": {
																	"description": "The calendar user's RSVP status",
																	"enum": [
																		"needsAction",
																		"accepted",
																		"declined",
																		"tentative"
																	],
																	"type": "string"
																}
															},
															"type": "object"
														}
													},
													"colors": {
														"properties": {
															"foreground": {
																"type": "string"
															},
															"background": {
																"type": "string"
															}
														},
														"type": "object"
													},
													"attachments": {
														"type": "array",
														"items": {
															"required": ["url"],
															"properties": {
																"url": {
																	"format": "uri",
																	"type": "string"
																},
																"mimeType": {
																	"type": "string"
																},
																"title": {
																	"type": "string"
																},
																"notionWorkspaceId": {
																	"type": "string"
																}
															},
															"type": "object"
														}
													}
												},
												"type": "object"
											}
										}
									},
									"type": "object"
								}
							},
							"errors": {
								"type": "array",
								"items": {
									"required": ["identifier", "errorMessage"],
									"properties": {
										"identifier": {
											"description": "An identifier for the item that failed (e.g., event summary for creation, event ID for updates/cancellations)",
											"type": "string"
										},
										"errorMessage": {
											"description": "Description of the error that occurred",
											"type": "string"
										}
									},
									"type": "object"
								}
							}
						},
						"type": "object"
					},
					{
						"required": ["resultsBySlot"],
						"properties": {
							"resultsBySlot": {
								"description": "Results for each requested time slot, with available rooms sorted by capacity",
								"type": "array",
								"items": {
									"required": ["timeSlot", "availableResources"],
									"properties": {
										"timeSlot": {
											"description": "The time slot being checked",
											"required": ["startAt", "endAt"],
											"properties": {
												"startAt": {
													"format": "date-time",
													"type": "string"
												},
												"endAt": {
													"format": "date-time",
													"type": "string"
												}
											},
											"type": "object"
										},
										"availableResources": {
											"description": "Available conference rooms for this time slot, sorted by increasing capacity (smallest rooms first)",
											"type": "array",
											"items": {
												"required": ["resourceEmail", "resourceName"],
												"properties": {
													"resourceEmail": {
														"description": "Use this as the email when adding rooms to events",
														"type": "string"
													},
													"resourceName": {
														"description": "Display name of the conference room",
														"type": "string"
													},
													"building": {
														"description": "Building information",
														"required": ["buildingId"],
														"properties": {
															"buildingId": {
																"type": "string"
															},
															"buildingName": {
																"type": "string"
															}
														},
														"type": "object"
													},
													"capacity": {
														"description": "Maximum number of people the room can accommodate",
														"type": "number"
													},
													"floor": {
														"description": "Floor location",
														"type": "string"
													},
													"description": {
														"description": "Room description",
														"type": "string"
													}
												},
												"type": "object"
											}
										}
									},
									"type": "object"
								}
							}
						},
						"type": "object"
					},
					{
						"required": ["accounts"],
						"properties": {
							"accounts": {
								"type": "array",
								"items": {
									"description": "An account the user connected to Notion Calendar",
									"required": [
										"accountId",
										"capabilities",
										"contacts",
										"providerName"
									],
									"properties": {
										"accountId": {
											"type": "string"
										},
										"providerName": {
											"description": "Google, Apple iCloud, Outlook, etc.",
											"type": "string"
										},
										"email": {
											"description": "The user email associated with this account. Useful to know if this account and its data should be used depending on context.",
											"type": "string"
										},
										"category": {
											"description": "Whether this account is work-related or a personal account, if we know this information.",
											"enum": ["work", "personal"],
											"type": "string"
										},
										"capabilities": {
											"required": [
												"readCalendars",
												"readEvents",
												"writeEvents",
												"searchEvents",
												"readContacts"
											],
											"properties": {
												"readCalendars": {
													"description": "Does this account expose any calendars?",
													"type": "boolean"
												},
												"readEvents": {
													"description": "Can we read calendar events from calendars of this account?",
													"type": "boolean"
												},
												"writeEvents": {
													"description": "Can we write events in some calendars of this account? Calendars themselves might have their own set of restrictions.",
													"type": "boolean"
												},
												"searchEvents": {
													"description": "Can we use a text search query to find events in the calendars of this account?",
													"type": "boolean"
												},
												"readContacts": {
													"description": "Does this account expose contacts?",
													"type": "boolean"
												}
											},
											"type": "object"
										},
										"coworkersEmailDomains": {
											"description": "User can access the events of co-workers having an email address with one of these domains",
											"type": "array",
											"items": {
												"type": "string"
											}
										},
										"contacts": {
											"type": "array",
											"items": {
												"required": ["id", "email"],
												"properties": {
													"id": {
														"description": "Unique identifier for the contact",
														"type": "string"
													},
													"email": {
														"description": "Primary email address of the contact",
														"type": "string"
													},
													"alternateEmails": {
														"description": "Additional email addresses for this contact",
														"type": "array",
														"items": {
															"type": "string"
														}
													},
													"displayName": {
														"description": "Display name of the contact",
														"type": "string"
													},
													"phoneNumbers": {
														"description": "Phone numbers associated with this contact",
														"type": "array",
														"items": {
															"required": ["value"],
															"properties": {
																"type": {
																	"description": "The type of phone number (e.g., home, work, mobile)",
																	"type": "string"
																},
																"value": {
																	"description": "The phone number value",
																	"type": "string"
																}
															},
															"type": "object"
														}
													},
													"photoUrl": {
														"description": "URL to the contact's profile photo",
														"type": "string"
													}
												},
												"type": "object"
											}
										}
									},
									"type": "object"
								}
							}
						},
						"type": "object"
					},
					{
						"required": ["schedulingLinks"],
						"properties": {
							"schedulingLinks": {
								"type": "array",
								"items": {
									"required": [
										"id",
										"shortId",
										"bookingCalendarRef",
										"status",
										"timeRanges"
									],
									"properties": {
										"id": {
											"description": "Unique ID of the created scheduling link",
											"type": "string"
										},
										"shortId": {
											"description": "Short ID used in the scheduling link URL",
											"type": "string"
										},
										"bookingCalendarRef": {
											"description": "Current booking calendar for this scheduling link",
											"required": ["accountId", "calendarId"],
											"properties": {
												"accountId": {
													"type": "string"
												},
												"calendarId": {
													"type": "string"
												}
											},
											"type": "object"
										},
										"alias": {
											"description": "Custom URL slug for the scheduling link",
											"type": "string"
										},
										"type": {
											"description": "The resolved type of the link",
											"enum": ["singleUse", "multiUse", "recurring"],
											"type": "string"
										},
										"status": {
											"description": "Status of the scheduling link",
											"type": "string"
										},
										"title": {
											"type": "string"
										},
										"description": {
											"type": "string"
										},
										"duration": {
											"type": "number"
										},
										"schedulingLinkUrl": {
											"description": "Full URL where invitees can book a meeting",
											"type": "string"
										},
										"timeRanges": {
											"type": "array",
											"items": {
												"required": ["startDate", "endDate", "id"],
												"properties": {
													"startDate": {
														"description": "Start of availability window in ISO 8601 format with timezone offset, e.g. '2024-08-22T09:00:00-04:00'",
														"type": "string"
													},
													"endDate": {
														"description": "End of availability window in ISO 8601 format with timezone offset, e.g. '2024-08-22T17:00:00-04:00'",
														"type": "string"
													},
													"recurrence": {
														"description": "Recurrence rules in RRULE format (e.g., ['RRULE:FREQ=WEEKLY;COUNT=10']). Can also include EXDATE for exception dates (e.g., ['RRULE:FREQ=WEEKLY;COUNT=10', 'EXDATE:2026-03-24T13:00:00']).",
														"type": "array",
														"items": {
															"type": "string"
														}
													},
													"id": {
														"description": "Unique identifier for this time range",
														"type": "string"
													}
												},
												"type": "object"
											}
										}
									},
									"type": "object"
								}
							}
						},
						"type": "object"
					},
					{
						"required": ["accounts"],
						"properties": {
							"accounts": {
								"type": "array",
								"items": {
									"description": "An account the user connected to Notion Calendar",
									"required": [
										"accountId",
										"calendars",
										"capabilities",
										"providerName"
									],
									"properties": {
										"accountId": {
											"type": "string"
										},
										"providerName": {
											"description": "Google, Apple iCloud, Outlook, etc.",
											"type": "string"
										},
										"email": {
											"description": "The user email associated with this account. Useful to know if this account and its data should be used depending on context.",
											"type": "string"
										},
										"category": {
											"description": "Whether this account is work-related or a personal account, if we know this information.",
											"enum": ["work", "personal"],
											"type": "string"
										},
										"capabilities": {
											"required": [
												"readCalendars",
												"readEvents",
												"writeEvents",
												"searchEvents",
												"readContacts"
											],
											"properties": {
												"readCalendars": {
													"description": "Does this account expose any calendars?",
													"type": "boolean"
												},
												"readEvents": {
													"description": "Can we read calendar events from calendars of this account?",
													"type": "boolean"
												},
												"writeEvents": {
													"description": "Can we write events in some calendars of this account? Calendars themselves might have their own set of restrictions.",
													"type": "boolean"
												},
												"searchEvents": {
													"description": "Can we use a text search query to find events in the calendars of this account?",
													"type": "boolean"
												},
												"readContacts": {
													"description": "Does this account expose contacts?",
													"type": "boolean"
												}
											},
											"type": "object"
										},
										"coworkersEmailDomains": {
											"description": "User can access the events of co-workers having an email address with one of these domains",
											"type": "array",
											"items": {
												"type": "string"
											}
										},
										"calendars": {
											"type": "array",
											"items": {
												"required": [
													"accountId",
													"calendarId",
													"createdEvents",
													"isHidden",
													"isPrimary",
													"isReadOnly",
													"isSelected",
													"name"
												],
												"properties": {
													"accountId": {
														"type": "string"
													},
													"calendarId": {
														"type": "string"
													},
													"name": {
														"type": "string"
													},
													"description": {
														"type": "string"
													},
													"colors": {
														"properties": {
															"foreground": {
																"type": "string"
															},
															"background": {
																"type": "string"
															}
														},
														"type": "object"
													},
													"isPrimary": {
														"type": "boolean"
													},
													"isReadOnly": {
														"description": "Is this calendar read-only or can the user create/edit/delete events?",
														"type": "boolean"
													},
													"isSelected": {
														"description": "The contents of a calendar appear in the user calendar app only if that calendar is selected.\nCalendars that are not selected might be useful to get lower-signal events, but probably not to create events as it might not be visible to the user.",
														"type": "boolean"
													},
													"isHidden": {
														"description": "A hidden calendar is a calendar the user has access to but decided to hide completely from their calendar app.\nHidden calendars might be useful to know what you might have access to, but keep in mind the user hid them and is most likely not aware of their content.",
														"type": "boolean"
													},
													"ownerEmail": {
														"description": "The email address of the owner of this calendar.",
														"type": "string"
													},
													"createdEvents": {
														"type": "array",
														"items": {
															"required": [
																"calendar",
																"eventId",
																"summary",
																"webUrl",
																"period",
																"isRecurring",
																"isTransparent",
																"isAutoBlock",
																"isMeeting"
															],
															"properties": {
																"calendar": {
																	"required": ["accountId", "calendarId"],
																	"properties": {
																		"accountId": {
																			"type": "string"
																		},
																		"calendarId": {
																			"type": "string"
																		}
																	},
																	"type": "object"
																},
																"eventId": {
																	"type": "string"
																},
																"summary": {
																	"minLength": 1,
																	"type": "string"
																},
																"description": {
																	"type": "string"
																},
																"location": {
																	"description": "Physical location where the event takes place, or remote conference link/info.",
																	"type": "string"
																},
																"recurrenceRules": {
																	"description": "Recurrence rules in RRULE format (e.g., ['RRULE:FREQ=WEEKLY;COUNT=10']). Can also include EXDATE for exception dates (e.g., ['RRULE:FREQ=WEEKLY;COUNT=10', 'EXDATE:2026-03-24T13:00:00']).",
																	"type": "array",
																	"items": {
																		"type": "string"
																	}
																},
																"provider": {
																	"description": "The data provider this event belongs to",
																	"enum": [
																		"google",
																		"notion",
																		"icloud",
																		"outlook"
																	],
																	"type": "string"
																},
																"webUrl": {
																	"description": "The URL to view the event in the Calendar app.",
																	"format": "uri",
																	"type": "string"
																},
																"period": {
																	"description": "When the event is happening",
																	"oneOf": [
																		{
																			"description": "A date-only period, denoting an all-day event. Property `type` must be set to the exact string \"DATE\"",
																			"required": ["type", "start", "end"],
																			"properties": {
																				"type": {
																					"const": "DATE",
																					"type": "string"
																				},
																				"start": {
																					"required": ["date"],
																					"properties": {
																						"date": {
																							"description": "Date in ISO 8601 format (no time)",
																							"format": "date",
																							"type": "string"
																						}
																					},
																					"type": "object"
																				},
																				"end": {
																					"required": ["date"],
																					"properties": {
																						"date": {
																							"description": "Date in ISO 8601 format (no time)",
																							"format": "date",
																							"type": "string"
																						}
																					},
																					"type": "object"
																				}
																			},
																			"type": "object"
																		},
																		{
																			"description": "A date-time period, denoting an time-bound event (can span multiple days). Property `type` must be set to the exact string \"DATE_TIME\"",
																			"required": ["type", "start", "end"],
																			"properties": {
																				"type": {
																					"const": "DATE_TIME",
																					"type": "string"
																				},
																				"start": {
																					"required": ["dateTime"],
																					"example": {
																						"dateTime": "2025-04-30T12:09:00.000-05:00",
																						"timeZone": "America/Chicago"
																					},
																					"properties": {
																						"dateTime": {
																							"description": "Date-time in ISO 8601 format, in UTC (ending with Z), or with TZ offset",
																							"format": "date-time",
																							"type": "string"
																						},
																						"timeZone": {
																							"type": "string"
																						}
																					},
																					"type": "object"
																				},
																				"end": {
																					"required": ["dateTime"],
																					"example": {
																						"dateTime": "2025-04-30T12:09:00.000-05:00",
																						"timeZone": "America/Chicago"
																					},
																					"properties": {
																						"dateTime": {
																							"description": "Date-time in ISO 8601 format, in UTC (ending with Z), or with TZ offset",
																							"format": "date-time",
																							"type": "string"
																						},
																						"timeZone": {
																							"type": "string"
																						}
																					},
																					"type": "object"
																				}
																			},
																			"type": "object"
																		}
																	],
																	"type": "object"
																},
																"isRecurring": {
																	"description": "Whether it's part of a recurring event series",
																	"type": "boolean"
																},
																"isTransparent": {
																	"description": "If true, the event does not block time on the calendar. This is equivalent to setting `Show me as to Available` in the Calendar UI.",
																	"type": "boolean"
																},
																"isAutoBlock": {
																	"description": "Is the event an auto-blocking event created from another event? Used to create blocked events on a calendar from events on another calendar. You can ignore auto-blocked events if there are events happening at the exact same time on other calendars.",
																	"type": "boolean"
																},
																"eventType": {
																	"description": "What kind of event is it? Standard, out of office, birthday...",
																	"enum": [
																		"fromGmail",
																		"default",
																		"focusTime",
																		"outOfOffice",
																		"birthday",
																		"availability"
																	],
																	"type": "string"
																},
																"eventStatus": {
																	"description": "Is an event confirmed, tentative or cancelled? This is different from the user's RSVP",
																	"enum": [
																		"confirmed",
																		"tentative",
																		"cancelled"
																	],
																	"type": "string"
																},
																"isMeeting": {
																	"description": "Whether it's a meeting, aka an event with attendees listed",
																	"type": "boolean"
																},
																"conferencingEntryPoints": {
																	"type": "array",
																	"items": {
																		"required": ["uri"],
																		"properties": {
																			"uri": {
																				"type": "string"
																			},
																			"accessCode": {
																				"type": "string"
																			},
																			"entryPointType": {
																				"enum": [
																					"video",
																					"phone",
																					"sip",
																					"more"
																				],
																				"type": "string"
																			},
																			"label": {
																				"type": "string"
																			},
																			"meetingCode": {
																				"type": "string"
																			},
																			"passcode": {
																				"type": "string"
																			},
																			"password": {
																				"type": "string"
																			},
																			"pin": {
																				"type": "string"
																			},
																			"notes": {
																				"type": "string"
																			},
																			"signature": {
																				"type": "string"
																			}
																		},
																		"type": "object"
																	}
																},
																"conferencingUrl": {
																	"description": "The URL to join the video conference, if available",
																	"format": "uri",
																	"type": "string"
																},
																"responseStatus": {
																	"description": "The calendar user's RSVP status",
																	"enum": [
																		"needsAction",
																		"accepted",
																		"declined",
																		"tentative"
																	],
																	"type": "string"
																},
																"creator": {
																	"required": ["isSelf"],
																	"properties": {
																		"isSelf": {
																			"description": "Whether this entry represents the calendar user",
																			"type": "boolean"
																		},
																		"displayName": {
																			"type": "string"
																		},
																		"email": {
																			"type": "string"
																		}
																	},
																	"type": "object"
																},
																"organizer": {
																	"required": ["isSelf"],
																	"properties": {
																		"isSelf": {
																			"description": "Whether this entry represents the calendar user",
																			"type": "boolean"
																		},
																		"displayName": {
																			"type": "string"
																		},
																		"email": {
																			"type": "string"
																		}
																	},
																	"type": "object"
																},
																"attendees": {
																	"type": "array",
																	"items": {
																		"required": ["isOptional", "isSelf"],
																		"properties": {
																			"isSelf": {
																				"description": "Whether this entry represents the calendar user",
																				"type": "boolean"
																			},
																			"displayName": {
																				"type": "string"
																			},
																			"email": {
																				"type": "string"
																			},
																			"isOptional": {
																				"type": "boolean"
																			},
																			"isOrganizer": {
																				"type": "boolean"
																			},
																			"responseStatus": {
																				"description": "The calendar user's RSVP status",
																				"enum": [
																					"needsAction",
																					"accepted",
																					"declined",
																					"tentative"
																				],
																				"type": "string"
																			}
																		},
																		"type": "object"
																	}
																},
																"resources": {
																	"type": "array",
																	"items": {
																		"required": ["isOptional"],
																		"properties": {
																			"displayName": {
																				"type": "string"
																			},
																			"email": {
																				"type": "string"
																			},
																			"isOptional": {
																				"type": "boolean"
																			},
																			"responseStatus": {
																				"description": "The calendar user's RSVP status",
																				"enum": [
																					"needsAction",
																					"accepted",
																					"declined",
																					"tentative"
																				],
																				"type": "string"
																			}
																		},
																		"type": "object"
																	}
																},
																"colors": {
																	"properties": {
																		"foreground": {
																			"type": "string"
																		},
																		"background": {
																			"type": "string"
																		}
																	},
																	"type": "object"
																},
																"attachments": {
																	"type": "array",
																	"items": {
																		"required": ["url"],
																		"properties": {
																			"url": {
																				"format": "uri",
																				"type": "string"
																			},
																			"mimeType": {
																				"type": "string"
																			},
																			"title": {
																				"type": "string"
																			},
																			"notionWorkspaceId": {
																				"type": "string"
																			}
																		},
																		"type": "object"
																	}
																}
															},
															"type": "object"
														}
													}
												},
												"type": "object"
											}
										}
									},
									"type": "object"
								}
							},
							"errors": {
								"type": "array",
								"items": {
									"required": ["identifier", "errorMessage"],
									"properties": {
										"identifier": {
											"description": "An identifier for the item that failed (e.g., event summary for creation, event ID for updates/cancellations)",
											"type": "string"
										},
										"errorMessage": {
											"description": "Description of the error that occurred",
											"type": "string"
										}
									},
									"type": "object"
								}
							}
						},
						"type": "object"
					},
					{
						"required": ["updatedEvents"],
						"properties": {
							"updatedEvents": {
								"type": "array",
								"items": {
									"required": [
										"calendar",
										"eventId",
										"summary",
										"webUrl",
										"period",
										"isRecurring",
										"isTransparent",
										"isAutoBlock",
										"isMeeting"
									],
									"properties": {
										"calendar": {
											"required": ["accountId", "calendarId"],
											"properties": {
												"accountId": {
													"type": "string"
												},
												"calendarId": {
													"type": "string"
												}
											},
											"type": "object"
										},
										"eventId": {
											"type": "string"
										},
										"summary": {
											"minLength": 1,
											"type": "string"
										},
										"description": {
											"type": "string"
										},
										"location": {
											"description": "Physical location where the event takes place, or remote conference link/info.",
											"type": "string"
										},
										"recurrenceRules": {
											"description": "Recurrence rules in RRULE format (e.g., ['RRULE:FREQ=WEEKLY;COUNT=10']). Can also include EXDATE for exception dates (e.g., ['RRULE:FREQ=WEEKLY;COUNT=10', 'EXDATE:2026-03-24T13:00:00']).",
											"type": "array",
											"items": {
												"type": "string"
											}
										},
										"provider": {
											"description": "The data provider this event belongs to",
											"enum": ["google", "notion", "icloud", "outlook"],
											"type": "string"
										},
										"webUrl": {
											"description": "The URL to view the event in the Calendar app.",
											"format": "uri",
											"type": "string"
										},
										"period": {
											"description": "When the event is happening",
											"oneOf": [
												{
													"description": "A date-only period, denoting an all-day event. Property `type` must be set to the exact string \"DATE\"",
													"required": ["type", "start", "end"],
													"properties": {
														"type": {
															"const": "DATE",
															"type": "string"
														},
														"start": {
															"required": ["date"],
															"properties": {
																"date": {
																	"description": "Date in ISO 8601 format (no time)",
																	"format": "date",
																	"type": "string"
																}
															},
															"type": "object"
														},
														"end": {
															"required": ["date"],
															"properties": {
																"date": {
																	"description": "Date in ISO 8601 format (no time)",
																	"format": "date",
																	"type": "string"
																}
															},
															"type": "object"
														}
													},
													"type": "object"
												},
												{
													"description": "A date-time period, denoting an time-bound event (can span multiple days). Property `type` must be set to the exact string \"DATE_TIME\"",
													"required": ["type", "start", "end"],
													"properties": {
														"type": {
															"const": "DATE_TIME",
															"type": "string"
														},
														"start": {
															"required": ["dateTime"],
															"example": {
																"dateTime": "2025-04-30T12:09:00.000-05:00",
																"timeZone": "America/Chicago"
															},
															"properties": {
																"dateTime": {
																	"description": "Date-time in ISO 8601 format, in UTC (ending with Z), or with TZ offset",
																	"format": "date-time",
																	"type": "string"
																},
																"timeZone": {
																	"type": "string"
																}
															},
															"type": "object"
														},
														"end": {
															"required": ["dateTime"],
															"example": {
																"dateTime": "2025-04-30T12:09:00.000-05:00",
																"timeZone": "America/Chicago"
															},
															"properties": {
																"dateTime": {
																	"description": "Date-time in ISO 8601 format, in UTC (ending with Z), or with TZ offset",
																	"format": "date-time",
																	"type": "string"
																},
																"timeZone": {
																	"type": "string"
																}
															},
															"type": "object"
														}
													},
													"type": "object"
												}
											],
											"type": "object"
										},
										"isRecurring": {
											"description": "Whether it's part of a recurring event series",
											"type": "boolean"
										},
										"isTransparent": {
											"description": "If true, the event does not block time on the calendar. This is equivalent to setting `Show me as to Available` in the Calendar UI.",
											"type": "boolean"
										},
										"isAutoBlock": {
											"description": "Is the event an auto-blocking event created from another event? Used to create blocked events on a calendar from events on another calendar. You can ignore auto-blocked events if there are events happening at the exact same time on other calendars.",
											"type": "boolean"
										},
										"eventType": {
											"description": "What kind of event is it? Standard, out of office, birthday...",
											"enum": [
												"fromGmail",
												"default",
												"focusTime",
												"outOfOffice",
												"birthday",
												"availability"
											],
											"type": "string"
										},
										"eventStatus": {
											"description": "Is an event confirmed, tentative or cancelled? This is different from the user's RSVP",
											"enum": ["confirmed", "tentative", "cancelled"],
											"type": "string"
										},
										"isMeeting": {
											"description": "Whether it's a meeting, aka an event with attendees listed",
											"type": "boolean"
										},
										"conferencingEntryPoints": {
											"type": "array",
											"items": {
												"required": ["uri"],
												"properties": {
													"uri": {
														"type": "string"
													},
													"accessCode": {
														"type": "string"
													},
													"entryPointType": {
														"enum": ["video", "phone", "sip", "more"],
														"type": "string"
													},
													"label": {
														"type": "string"
													},
													"meetingCode": {
														"type": "string"
													},
													"passcode": {
														"type": "string"
													},
													"password": {
														"type": "string"
													},
													"pin": {
														"type": "string"
													},
													"notes": {
														"type": "string"
													},
													"signature": {
														"type": "string"
													}
												},
												"type": "object"
											}
										},
										"conferencingUrl": {
											"description": "The URL to join the video conference, if available",
											"format": "uri",
											"type": "string"
										},
										"responseStatus": {
											"description": "The calendar user's RSVP status",
											"enum": [
												"needsAction",
												"accepted",
												"declined",
												"tentative"
											],
											"type": "string"
										},
										"creator": {
											"required": ["isSelf"],
											"properties": {
												"isSelf": {
													"description": "Whether this entry represents the calendar user",
													"type": "boolean"
												},
												"displayName": {
													"type": "string"
												},
												"email": {
													"type": "string"
												}
											},
											"type": "object"
										},
										"organizer": {
											"required": ["isSelf"],
											"properties": {
												"isSelf": {
													"description": "Whether this entry represents the calendar user",
													"type": "boolean"
												},
												"displayName": {
													"type": "string"
												},
												"email": {
													"type": "string"
												}
											},
											"type": "object"
										},
										"attendees": {
											"type": "array",
											"items": {
												"required": ["isOptional", "isSelf"],
												"properties": {
													"isSelf": {
														"description": "Whether this entry represents the calendar user",
														"type": "boolean"
													},
													"displayName": {
														"type": "string"
													},
													"email": {
														"type": "string"
													},
													"isOptional": {
														"type": "boolean"
													},
													"isOrganizer": {
														"type": "boolean"
													},
													"responseStatus": {
														"description": "The calendar user's RSVP status",
														"enum": [
															"needsAction",
															"accepted",
															"declined",
															"tentative"
														],
														"type": "string"
													}
												},
												"type": "object"
											}
										},
										"resources": {
											"type": "array",
											"items": {
												"required": ["isOptional"],
												"properties": {
													"displayName": {
														"type": "string"
													},
													"email": {
														"type": "string"
													},
													"isOptional": {
														"type": "boolean"
													},
													"responseStatus": {
														"description": "The calendar user's RSVP status",
														"enum": [
															"needsAction",
															"accepted",
															"declined",
															"tentative"
														],
														"type": "string"
													}
												},
												"type": "object"
											}
										},
										"colors": {
											"properties": {
												"foreground": {
													"type": "string"
												},
												"background": {
													"type": "string"
												}
											},
											"type": "object"
										},
										"attachments": {
											"type": "array",
											"items": {
												"required": ["url"],
												"properties": {
													"url": {
														"format": "uri",
														"type": "string"
													},
													"mimeType": {
														"type": "string"
													},
													"title": {
														"type": "string"
													},
													"notionWorkspaceId": {
														"type": "string"
													}
												},
												"type": "object"
											}
										}
									},
									"type": "object"
								}
							},
							"errors": {
								"type": "array",
								"items": {
									"required": ["identifier", "errorMessage"],
									"properties": {
										"identifier": {
											"description": "An identifier for the item that failed (e.g., event summary for creation, event ID for updates/cancellations)",
											"type": "string"
										},
										"errorMessage": {
											"description": "Description of the error that occurred",
											"type": "string"
										}
									},
									"type": "object"
								}
							}
						},
						"type": "object"
					},
					{
						"required": ["canceledEvents"],
						"properties": {
							"canceledEvents": {
								"type": "array",
								"items": {
									"required": ["calendar", "eventId"],
									"properties": {
										"calendar": {
											"required": ["accountId", "calendarId"],
											"properties": {
												"accountId": {
													"type": "string"
												},
												"calendarId": {
													"type": "string"
												}
											},
											"type": "object"
										},
										"eventId": {
											"type": "string"
										},
										"eventSummary": {
											"description": "Optional summary of the event, used by agent UI.",
											"type": "string"
										}
									},
									"type": "object"
								}
							},
							"errors": {
								"type": "array",
								"items": {
									"required": ["identifier", "errorMessage"],
									"properties": {
										"identifier": {
											"description": "An identifier for the item that failed (e.g., event summary for creation, event ID for updates/cancellations)",
											"type": "string"
										},
										"errorMessage": {
											"description": "Description of the error that occurred",
											"type": "string"
										}
									},
									"type": "object"
								}
							}
						},
						"type": "object"
					},
					{
						"properties": {
							"schedulingLink": {
								"description": "The created scheduling link",
								"required": [
									"id",
									"shortId",
									"bookingCalendarRef",
									"status",
									"timeRanges"
								],
								"properties": {
									"id": {
										"description": "Unique ID of the created scheduling link",
										"type": "string"
									},
									"shortId": {
										"description": "Short ID used in the scheduling link URL",
										"type": "string"
									},
									"bookingCalendarRef": {
										"description": "Current booking calendar for this scheduling link",
										"required": ["accountId", "calendarId"],
										"properties": {
											"accountId": {
												"type": "string"
											},
											"calendarId": {
												"type": "string"
											}
										},
										"type": "object"
									},
									"alias": {
										"description": "Custom URL slug for the scheduling link",
										"type": "string"
									},
									"type": {
										"description": "The resolved type of the link",
										"enum": ["singleUse", "multiUse", "recurring"],
										"type": "string"
									},
									"status": {
										"description": "Status of the scheduling link",
										"type": "string"
									},
									"title": {
										"type": "string"
									},
									"description": {
										"type": "string"
									},
									"duration": {
										"type": "number"
									},
									"schedulingLinkUrl": {
										"description": "Full URL where invitees can book a meeting",
										"type": "string"
									},
									"timeRanges": {
										"type": "array",
										"items": {
											"required": ["startDate", "endDate", "id"],
											"properties": {
												"startDate": {
													"description": "Start of availability window in ISO 8601 format with timezone offset, e.g. '2024-08-22T09:00:00-04:00'",
													"type": "string"
												},
												"endDate": {
													"description": "End of availability window in ISO 8601 format with timezone offset, e.g. '2024-08-22T17:00:00-04:00'",
													"type": "string"
												},
												"recurrence": {
													"description": "Recurrence rules in RRULE format (e.g., ['RRULE:FREQ=WEEKLY;COUNT=10']). Can also include EXDATE for exception dates (e.g., ['RRULE:FREQ=WEEKLY;COUNT=10', 'EXDATE:2026-03-24T13:00:00']).",
													"type": "array",
													"items": {
														"type": "string"
													}
												},
												"id": {
													"description": "Unique identifier for this time range",
													"type": "string"
												}
											},
											"type": "object"
										}
									}
								},
								"type": "object"
							},
							"errors": {
								"type": "array",
								"items": {
									"required": ["identifier", "errorMessage"],
									"properties": {
										"identifier": {
											"description": "An identifier for the item that failed (e.g., event summary for creation, event ID for updates/cancellations)",
											"type": "string"
										},
										"errorMessage": {
											"description": "Description of the error that occurred",
											"type": "string"
										}
									},
									"type": "object"
								}
							}
						},
						"type": "object"
					},
					{
						"properties": {
							"schedulingLink": {
								"description": "The updated scheduling link",
								"required": [
									"id",
									"shortId",
									"bookingCalendarRef",
									"status",
									"timeRanges"
								],
								"properties": {
									"id": {
										"description": "Unique ID of the created scheduling link",
										"type": "string"
									},
									"shortId": {
										"description": "Short ID used in the scheduling link URL",
										"type": "string"
									},
									"bookingCalendarRef": {
										"description": "Current booking calendar for this scheduling link",
										"required": ["accountId", "calendarId"],
										"properties": {
											"accountId": {
												"type": "string"
											},
											"calendarId": {
												"type": "string"
											}
										},
										"type": "object"
									},
									"alias": {
										"description": "Custom URL slug for the scheduling link",
										"type": "string"
									},
									"type": {
										"description": "The resolved type of the link",
										"enum": ["singleUse", "multiUse", "recurring"],
										"type": "string"
									},
									"status": {
										"description": "Status of the scheduling link",
										"type": "string"
									},
									"title": {
										"type": "string"
									},
									"description": {
										"type": "string"
									},
									"duration": {
										"type": "number"
									},
									"schedulingLinkUrl": {
										"description": "Full URL where invitees can book a meeting",
										"type": "string"
									},
									"timeRanges": {
										"type": "array",
										"items": {
											"required": ["startDate", "endDate", "id"],
											"properties": {
												"startDate": {
													"description": "Start of availability window in ISO 8601 format with timezone offset, e.g. '2024-08-22T09:00:00-04:00'",
													"type": "string"
												},
												"endDate": {
													"description": "End of availability window in ISO 8601 format with timezone offset, e.g. '2024-08-22T17:00:00-04:00'",
													"type": "string"
												},
												"recurrence": {
													"description": "Recurrence rules in RRULE format (e.g., ['RRULE:FREQ=WEEKLY;COUNT=10']). Can also include EXDATE for exception dates (e.g., ['RRULE:FREQ=WEEKLY;COUNT=10', 'EXDATE:2026-03-24T13:00:00']).",
													"type": "array",
													"items": {
														"type": "string"
													}
												},
												"id": {
													"description": "Unique identifier for this time range",
													"type": "string"
												}
											},
											"type": "object"
										}
									}
								},
								"type": "object"
							},
							"errors": {
								"type": "array",
								"items": {
									"required": ["identifier", "errorMessage"],
									"properties": {
										"identifier": {
											"description": "An identifier for the item that failed (e.g., event summary for creation, event ID for updates/cancellations)",
											"type": "string"
										},
										"errorMessage": {
											"description": "Description of the error that occurred",
											"type": "string"
										}
									},
									"type": "object"
								}
							}
						},
						"type": "object"
					},
					{
						"required": ["deletedSchedulingLinkIds"],
						"properties": {
							"deletedSchedulingLinkIds": {
								"description": "IDs of the scheduling links that were deleted",
								"type": "array",
								"items": {
									"type": "string"
								}
							},
							"errors": {
								"type": "array",
								"items": {
									"required": ["identifier", "errorMessage"],
									"properties": {
										"identifier": {
											"description": "An identifier for the item that failed (e.g., event summary for creation, event ID for updates/cancellations)",
											"type": "string"
										},
										"errorMessage": {
											"description": "Description of the error that occurred",
											"type": "string"
										}
									},
									"type": "object"
								}
							}
						},
						"type": "object"
					},
					{
						"type": "object",
						"properties": {
							"success": {
								"type": "boolean",
								"const": true,
								"description": "The Revision was finished."
							}
						},
						"additionalProperties": false,
						"required": ["success"]
					},
					{
						"type": "object",
						"properties": {
							"success": {
								"type": "boolean",
								"const": false,
								"description": "No Revision was finished."
							},
							"reason": {
								"type": "string",
								"enum": ["no_active_revision", "already_finished"],
								"description": "Why no Revision was finished."
							},
							"message": {
								"type": "string",
								"description": "Why no Revision was finished, explained for the agent."
							}
						},
						"additionalProperties": false,
						"required": ["success", "reason", "message"]
					},
					{
						"type": "object",
						"properties": {
							"status": {
								"type": "string",
								"enum": ["linked", "already_linked"],
								"description": "One of: `linked`, `already_linked`"
							},
							"url": {
								"type": "string"
							},
							"otherMeetingNoteUrls": {
								"type": "array",
								"items": {
									"type": "string"
								},
								"maxItems": 50
							}
						},
						"additionalProperties": false,
						"required": ["status", "url", "otherMeetingNoteUrls"]
					},
					{
						"type": "object",
						"properties": {
							"databaseUrl": {
								"type": "string",
								"description": "URL of the converted database."
							},
							"dateProperty": {
								"type": "string",
								"description": "Name of the property used as the meeting date."
							},
							"attendeesProperty": {
								"type": "string",
								"description": "Name of the property used as the meeting attendees."
							}
						},
						"additionalProperties": false,
						"required": ["databaseUrl", "dateProperty", "attendeesProperty"]
					},
					{
						"type": "object",
						"properties": {
							"status": {
								"type": "string",
								"enum": ["created", "existing"],
								"description": "One of: `created`, `existing`"
							},
							"url": {
								"type": "string"
							},
							"parent": {
								"type": "object",
								"properties": {
									"type": {
										"type": "string",
										"enum": [
											"agent",
											"user",
											"page",
											"dataSource",
											"teamspace"
										],
										"description": "One of: `agent`, `user`, `page`, `dataSource`, `teamspace`"
									},
									"url": {
										"type": "string"
									}
								},
								"additionalProperties": false,
								"required": ["type", "url"]
							}
						},
						"additionalProperties": false,
						"required": ["status", "url", "parent"]
					},
					{
						"type": "object",
						"properties": {
							"status": {
								"type": "string",
								"const": "requires_confirmation",
								"description": "Always `requires_confirmation`"
							}
						},
						"additionalProperties": false,
						"required": ["status"]
					}
				]
			},
			"selectColor": {
				"type": "string",
				"enum": [
					"default",
					"gray",
					"brown",
					"orange",
					"yellow",
					"green",
					"blue",
					"purple",
					"pink",
					"red"
				],
				"description": "One of: `default`, `gray`, `brown`, `orange`, `yellow`, `green`, `blue`, `purple`, `pink`, `red`"
			},
			"selectDatabasePropertyConfigResponse": {
				"type": "object",
				"properties": {
					"type": {
						"type": "string",
						"const": "select",
						"description": "Always `select`"
					},
					"select": {
						"type": "object",
						"properties": {
							"options": {
								"type": "array",
								"items": {
									"$ref": "#/components/schemas/selectPropertyResponse"
								},
								"maxItems": 100
							}
						},
						"additionalProperties": false,
						"required": ["options"]
					}
				},
				"required": ["type", "select"],
				"title": "Select"
			},
			"selectPropertyItemObjectResponse": {
				"title": "Select",
				"type": "object",
				"properties": {
					"type": {
						"type": "string",
						"const": "select"
					},
					"select": {
						"anyOf": [
							{
								"$ref": "#/components/schemas/partialSelectResponse"
							},
							{
								"type": "null"
							}
						]
					},
					"object": {
						"type": "string",
						"const": "property_item"
					},
					"id": {
						"type": "string"
					}
				},
				"required": ["type", "select", "object", "id"]
			},
			"selectPropertyResponse": {
				"type": "object",
				"properties": {
					"id": {
						"type": "string"
					},
					"name": {
						"type": "string"
					},
					"color": {
						"$ref": "#/components/schemas/selectColor"
					},
					"description": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					}
				},
				"additionalProperties": false,
				"required": ["id", "name", "color", "description"]
			},
			"selectSimplePropertyValueResponse": {
				"type": "object",
				"properties": {
					"type": {
						"type": "string",
						"const": "select",
						"description": "Always `select`"
					},
					"select": {
						"oneOf": [
							{
								"$ref": "#/components/schemas/partialSelectPropertyValueResponse"
							},
							{
								"type": "null"
							}
						]
					}
				},
				"additionalProperties": false,
				"required": ["type", "select"],
				"title": "Select"
			},
			"sessionAgentIdFilter": {
				"type": "object",
				"required": ["property", "string"],
				"additionalProperties": false,
				"properties": {
					"property": {
						"type": "string",
						"enum": ["agent_id"],
						"description": "Filter sessions by agent_id."
					},
					"string": {
						"type": "object",
						"description": "An exact string comparison.",
						"required": ["equals"],
						"additionalProperties": false,
						"properties": {
							"equals": {
								"type": "string",
								"description": "Return sessions with this exact value."
							}
						}
					}
				}
			},
			"sessionIdFilter": {
				"type": "object",
				"required": ["property", "string"],
				"additionalProperties": false,
				"properties": {
					"property": {
						"type": "string",
						"enum": ["id"],
						"description": "Filter sessions by id."
					},
					"string": {
						"type": "object",
						"description": "An exact string comparison.",
						"required": ["equals"],
						"additionalProperties": false,
						"properties": {
							"equals": {
								"type": "string",
								"description": "Return sessions with this exact value."
							}
						}
					}
				}
			},
			"sessionNestedFilter": {
				"oneOf": [
					{
						"$ref": "#/components/schemas/sessionIdFilter"
					},
					{
						"$ref": "#/components/schemas/sessionAgentIdFilter"
					},
					{
						"$ref": "#/components/schemas/sessionStatusFilter"
					},
					{
						"$ref": "#/components/schemas/sessionTimestampFilter"
					},
					{
						"type": "object",
						"required": ["and"],
						"additionalProperties": false,
						"properties": {
							"and": {
								"type": "array",
								"maxItems": 100,
								"description": "Return sessions that match every child filter.",
								"items": {
									"oneOf": [
										{
											"$ref": "#/components/schemas/sessionIdFilter"
										},
										{
											"$ref": "#/components/schemas/sessionAgentIdFilter"
										},
										{
											"$ref": "#/components/schemas/sessionStatusFilter"
										},
										{
											"$ref": "#/components/schemas/sessionTimestampFilter"
										}
									]
								}
							}
						}
					},
					{
						"type": "object",
						"required": ["or"],
						"additionalProperties": false,
						"properties": {
							"or": {
								"type": "array",
								"maxItems": 100,
								"description": "Return sessions that match any child filter.",
								"items": {
									"oneOf": [
										{
											"$ref": "#/components/schemas/sessionIdFilter"
										},
										{
											"$ref": "#/components/schemas/sessionAgentIdFilter"
										},
										{
											"$ref": "#/components/schemas/sessionStatusFilter"
										},
										{
											"$ref": "#/components/schemas/sessionTimestampFilter"
										}
									]
								}
							}
						}
					}
				]
			},
			"sessionStatusFilter": {
				"type": "object",
				"required": ["property", "status"],
				"additionalProperties": false,
				"properties": {
					"property": {
						"type": "string",
						"enum": ["status"],
						"description": "Filter sessions by status."
					},
					"status": {
						"type": "object",
						"description": "A session status comparison.",
						"additionalProperties": false,
						"properties": {
							"equals": {
								"type": "string",
								"description": "Return sessions with this status.",
								"enum": [
									"queued",
									"in_progress",
									"requires_action",
									"completed",
									"failed",
									"canceled",
									"terminated"
								]
							},
							"in": {
								"type": "array",
								"description": "Return sessions with any of these statuses.",
								"maxItems": 7,
								"items": {
									"type": "string",
									"enum": [
										"queued",
										"in_progress",
										"requires_action",
										"completed",
										"failed",
										"canceled",
										"terminated"
									]
								}
							}
						}
					}
				}
			},
			"sessionTimestampFilter": {
				"type": "object",
				"required": ["property", "timestamp"],
				"additionalProperties": false,
				"properties": {
					"property": {
						"type": "string",
						"description": "The session timestamp to compare.",
						"enum": ["created_at", "updated_at"]
					},
					"timestamp": {
						"type": "object",
						"description": "A timestamp range.",
						"additionalProperties": false,
						"properties": {
							"before": {
								"type": "string",
								"format": "date-time",
								"description": "Return sessions before this time."
							},
							"after": {
								"type": "string",
								"format": "date-time",
								"description": "Return sessions after this time."
							},
							"on_or_before": {
								"type": "string",
								"format": "date-time",
								"description": "Return sessions at or before this time."
							},
							"on_or_after": {
								"type": "string",
								"format": "date-time",
								"description": "Return sessions at or after this time."
							}
						}
					}
				}
			},
			"simpleOrArrayPropertyValueResponse": {
				"oneOf": [
					{
						"$ref": "#/components/schemas/simplePropertyValueResponse"
					},
					{
						"$ref": "#/components/schemas/arrayBasedPropertyValueResponse"
					}
				]
			},
			"simplePropertyValueResponse": {
				"oneOf": [
					{
						"$ref": "#/components/schemas/numberSimplePropertyValueResponse"
					},
					{
						"$ref": "#/components/schemas/urlSimplePropertyValueResponse"
					},
					{
						"$ref": "#/components/schemas/selectSimplePropertyValueResponse"
					},
					{
						"$ref": "#/components/schemas/multiSelectSimplePropertyValueResponse"
					},
					{
						"$ref": "#/components/schemas/statusSimplePropertyValueResponse"
					},
					{
						"$ref": "#/components/schemas/dateSimplePropertyValueResponse"
					},
					{
						"$ref": "#/components/schemas/emailSimplePropertyValueResponse"
					},
					{
						"$ref": "#/components/schemas/phoneNumberSimplePropertyValueResponse"
					},
					{
						"$ref": "#/components/schemas/checkboxSimplePropertyValueResponse"
					},
					{
						"$ref": "#/components/schemas/filesSimplePropertyValueResponse"
					},
					{
						"$ref": "#/components/schemas/createdBySimplePropertyValueResponse"
					},
					{
						"$ref": "#/components/schemas/createdTimeSimplePropertyValueResponse"
					},
					{
						"$ref": "#/components/schemas/lastEditedBySimplePropertyValueResponse"
					},
					{
						"$ref": "#/components/schemas/lastEditedTimeSimplePropertyValueResponse"
					},
					{
						"$ref": "#/components/schemas/formulaSimplePropertyValueResponse"
					},
					{
						"$ref": "#/components/schemas/buttonSimplePropertyValueResponse"
					},
					{
						"$ref": "#/components/schemas/uniqueIdSimplePropertyValueResponse"
					},
					{
						"$ref": "#/components/schemas/verificationSimplePropertyValueResponse"
					},
					{
						"$ref": "#/components/schemas/placeSimplePropertyValueResponse"
					}
				]
			},
			"singlePropertyDatabasePropertyRelationConfigResponse": {
				"type": "object",
				"properties": {
					"type": {
						"type": "string",
						"const": "single_property",
						"description": "Always `single_property`"
					},
					"single_property": {
						"$ref": "#/components/schemas/emptyObject"
					}
				},
				"required": ["type", "single_property"],
				"title": "Single Property"
			},
			"statusDatabasePropertyConfigResponse": {
				"type": "object",
				"properties": {
					"type": {
						"type": "string",
						"const": "status",
						"description": "Always `status`"
					},
					"status": {
						"type": "object",
						"properties": {
							"default_option": {
								"oneOf": [
									{
										"type": "string"
									},
									{
										"type": "null"
									}
								],
								"description": "The name of the configured default status option, or null when no default is configured. Read-only."
							},
							"options": {
								"type": "array",
								"items": {
									"$ref": "#/components/schemas/statusPropertyResponse"
								},
								"maxItems": 100,
								"description": "The options for the status property."
							},
							"groups": {
								"type": "array",
								"items": {
									"type": "object",
									"properties": {
										"id": {
											"type": "string",
											"description": "The ID of the status group."
										},
										"name": {
											"type": "string",
											"description": "The name of the status group."
										},
										"color": {
											"$ref": "#/components/schemas/selectColor",
											"description": "The color of the status group."
										},
										"option_ids": {
											"type": "array",
											"items": {
												"type": "string"
											},
											"maxItems": 100,
											"description": "The IDs of the status options in this group."
										}
									},
									"additionalProperties": false,
									"required": ["id", "name", "color", "option_ids"]
								},
								"maxItems": 100,
								"description": "The groups for the status property."
							}
						},
						"additionalProperties": false,
						"required": ["default_option", "options", "groups"]
					}
				},
				"required": ["type", "status"],
				"title": "Status"
			},
			"statusPropertyItemObjectResponse": {
				"title": "Status",
				"type": "object",
				"properties": {
					"type": {
						"type": "string",
						"const": "status"
					},
					"status": {
						"anyOf": [
							{
								"$ref": "#/components/schemas/partialSelectResponse"
							},
							{
								"type": "null"
							}
						]
					},
					"object": {
						"type": "string",
						"const": "property_item"
					},
					"id": {
						"type": "string"
					}
				},
				"required": ["type", "status", "object", "id"]
			},
			"statusPropertyResponse": {
				"type": "object",
				"properties": {
					"id": {
						"type": "string",
						"description": "The ID of the status option."
					},
					"name": {
						"type": "string",
						"description": "The name of the status option."
					},
					"color": {
						"$ref": "#/components/schemas/selectColor",
						"description": "The color of the status option."
					},
					"description": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						],
						"description": "The description of the status option."
					}
				},
				"additionalProperties": false,
				"required": ["id", "name", "color", "description"]
			},
			"statusSimplePropertyValueResponse": {
				"type": "object",
				"properties": {
					"type": {
						"type": "string",
						"const": "status",
						"description": "Always `status`"
					},
					"status": {
						"oneOf": [
							{
								"$ref": "#/components/schemas/partialSelectPropertyValueResponse"
							},
							{
								"type": "null"
							}
						]
					}
				},
				"additionalProperties": false,
				"required": ["type", "status"],
				"title": "Status"
			},
			"stringFormulaPropertyResponse": {
				"title": "String",
				"type": "object",
				"properties": {
					"type": {
						"type": "string",
						"const": "string"
					},
					"string": {
						"type": ["string", "null"]
					}
				},
				"required": ["type", "string"]
			},
			"stringFormulaPropertyValueResponse": {
				"type": "object",
				"properties": {
					"type": {
						"type": "string",
						"const": "string",
						"description": "Always `string`"
					},
					"string": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					}
				},
				"additionalProperties": false,
				"required": ["type", "string"],
				"title": "String"
			},
			"stringRequest": {
				"type": "string",
				"maxLength": 100,
				"minLength": 1
			},
			"syncedBlockBlockObjectResponse": {
				"title": "Synced Block",
				"type": "object",
				"properties": {
					"type": {
						"type": "string",
						"const": "synced_block"
					},
					"synced_block": {
						"type": "object",
						"properties": {
							"synced_from": {
								"title": "Block Id",
								"type": ["object", "null"],
								"properties": {
									"type": {
										"type": "string",
										"const": "block_id"
									},
									"block_id": {
										"$ref": "#/components/schemas/idRequest"
									}
								},
								"required": ["type", "block_id"]
							}
						},
						"required": ["synced_from"]
					},
					"parent": {
						"$ref": "#/components/schemas/parentForBlockBasedObjectResponse"
					},
					"object": {
						"type": "string",
						"const": "block"
					},
					"id": {
						"type": "string",
						"format": "uuid"
					},
					"created_time": {
						"type": "string",
						"format": "date-time"
					},
					"created_by": {
						"$ref": "#/components/schemas/partialUserObjectResponse"
					},
					"last_edited_time": {
						"type": "string",
						"format": "date-time"
					},
					"last_edited_by": {
						"$ref": "#/components/schemas/partialUserObjectResponse"
					},
					"has_children": {
						"type": "boolean"
					},
					"in_trash": {
						"type": "boolean"
					}
				},
				"required": [
					"type",
					"synced_block",
					"parent",
					"object",
					"id",
					"created_time",
					"created_by",
					"last_edited_time",
					"last_edited_by",
					"has_children",
					"in_trash"
				]
			},
			"tabBlockObjectResponse": {
				"title": "Tab",
				"type": "object",
				"properties": {
					"type": {
						"type": "string",
						"const": "tab"
					},
					"tab": {
						"$ref": "#/components/schemas/emptyObject"
					},
					"parent": {
						"$ref": "#/components/schemas/parentForBlockBasedObjectResponse"
					},
					"object": {
						"type": "string",
						"const": "block"
					},
					"id": {
						"type": "string",
						"format": "uuid"
					},
					"created_time": {
						"type": "string",
						"format": "date-time"
					},
					"created_by": {
						"$ref": "#/components/schemas/partialUserObjectResponse"
					},
					"last_edited_time": {
						"type": "string",
						"format": "date-time"
					},
					"last_edited_by": {
						"$ref": "#/components/schemas/partialUserObjectResponse"
					},
					"has_children": {
						"type": "boolean"
					},
					"in_trash": {
						"type": "boolean"
					}
				},
				"required": [
					"type",
					"tab",
					"parent",
					"object",
					"id",
					"created_time",
					"created_by",
					"last_edited_time",
					"last_edited_by",
					"has_children",
					"in_trash"
				]
			},
			"tableBlockObjectResponse": {
				"title": "Table",
				"type": "object",
				"properties": {
					"type": {
						"type": "string",
						"const": "table"
					},
					"table": {
						"$ref": "#/components/schemas/contentWithTableResponse"
					},
					"parent": {
						"$ref": "#/components/schemas/parentForBlockBasedObjectResponse"
					},
					"object": {
						"type": "string",
						"const": "block"
					},
					"id": {
						"type": "string",
						"format": "uuid"
					},
					"created_time": {
						"type": "string",
						"format": "date-time"
					},
					"created_by": {
						"$ref": "#/components/schemas/partialUserObjectResponse"
					},
					"last_edited_time": {
						"type": "string",
						"format": "date-time"
					},
					"last_edited_by": {
						"$ref": "#/components/schemas/partialUserObjectResponse"
					},
					"has_children": {
						"type": "boolean"
					},
					"in_trash": {
						"type": "boolean"
					}
				},
				"required": [
					"type",
					"table",
					"parent",
					"object",
					"id",
					"created_time",
					"created_by",
					"last_edited_time",
					"last_edited_by",
					"has_children",
					"in_trash"
				]
			},
			"tableOfContentsBlockObjectResponse": {
				"title": "Table Of Contents",
				"type": "object",
				"properties": {
					"type": {
						"type": "string",
						"const": "table_of_contents"
					},
					"table_of_contents": {
						"type": "object",
						"properties": {
							"color": {
								"$ref": "#/components/schemas/apiColor"
							}
						},
						"required": ["color"]
					},
					"parent": {
						"$ref": "#/components/schemas/parentForBlockBasedObjectResponse"
					},
					"object": {
						"type": "string",
						"const": "block"
					},
					"id": {
						"type": "string",
						"format": "uuid"
					},
					"created_time": {
						"type": "string",
						"format": "date-time"
					},
					"created_by": {
						"$ref": "#/components/schemas/partialUserObjectResponse"
					},
					"last_edited_time": {
						"type": "string",
						"format": "date-time"
					},
					"last_edited_by": {
						"$ref": "#/components/schemas/partialUserObjectResponse"
					},
					"has_children": {
						"type": "boolean"
					},
					"in_trash": {
						"type": "boolean"
					}
				},
				"required": [
					"type",
					"table_of_contents",
					"parent",
					"object",
					"id",
					"created_time",
					"created_by",
					"last_edited_time",
					"last_edited_by",
					"has_children",
					"in_trash"
				]
			},
			"tableRowBlockObjectResponse": {
				"title": "Table Row",
				"type": "object",
				"properties": {
					"type": {
						"type": "string",
						"const": "table_row"
					},
					"table_row": {
						"$ref": "#/components/schemas/contentWithTableRowResponse"
					},
					"parent": {
						"$ref": "#/components/schemas/parentForBlockBasedObjectResponse"
					},
					"object": {
						"type": "string",
						"const": "block"
					},
					"id": {
						"type": "string",
						"format": "uuid"
					},
					"created_time": {
						"type": "string",
						"format": "date-time"
					},
					"created_by": {
						"$ref": "#/components/schemas/partialUserObjectResponse"
					},
					"last_edited_time": {
						"type": "string",
						"format": "date-time"
					},
					"last_edited_by": {
						"$ref": "#/components/schemas/partialUserObjectResponse"
					},
					"has_children": {
						"type": "boolean"
					},
					"in_trash": {
						"type": "boolean"
					}
				},
				"required": [
					"type",
					"table_row",
					"parent",
					"object",
					"id",
					"created_time",
					"created_by",
					"last_edited_time",
					"last_edited_by",
					"has_children",
					"in_trash"
				]
			},
			"templateBlockObjectResponse": {
				"title": "Template",
				"type": "object",
				"properties": {
					"type": {
						"type": "string",
						"const": "template"
					},
					"template": {
						"type": "object",
						"properties": {
							"rich_text": {
								"type": "array",
								"items": {
									"$ref": "#/components/schemas/richTextItemResponse"
								},
								"maxItems": 100
							}
						},
						"required": ["rich_text"]
					},
					"parent": {
						"$ref": "#/components/schemas/parentForBlockBasedObjectResponse"
					},
					"object": {
						"type": "string",
						"const": "block"
					},
					"id": {
						"type": "string",
						"format": "uuid"
					},
					"created_time": {
						"type": "string",
						"format": "date-time"
					},
					"created_by": {
						"$ref": "#/components/schemas/partialUserObjectResponse"
					},
					"last_edited_time": {
						"type": "string",
						"format": "date-time"
					},
					"last_edited_by": {
						"$ref": "#/components/schemas/partialUserObjectResponse"
					},
					"has_children": {
						"type": "boolean"
					},
					"in_trash": {
						"type": "boolean"
					}
				},
				"required": [
					"type",
					"template",
					"parent",
					"object",
					"id",
					"created_time",
					"created_by",
					"last_edited_time",
					"last_edited_by",
					"has_children",
					"in_trash"
				]
			},
			"templateMentionDateTemplateMentionRequest": {
				"type": "object",
				"properties": {
					"type": {
						"type": "string",
						"const": "template_mention_date",
						"description": "Always `template_mention_date`"
					},
					"template_mention_date": {
						"type": "string",
						"enum": ["today", "now"],
						"description": "The date of the template mention."
					}
				},
				"additionalProperties": false,
				"required": ["template_mention_date"],
				"title": "Template Mention Date"
			},
			"templateMentionDateTemplateMentionResponse": {
				"type": "object",
				"properties": {
					"type": {
						"type": "string",
						"const": "template_mention_date",
						"description": "Always `template_mention_date`"
					},
					"template_mention_date": {
						"type": "string",
						"enum": ["today", "now"],
						"description": "The date of the template mention."
					}
				},
				"additionalProperties": false,
				"required": ["type", "template_mention_date"],
				"title": "Template Mention Date"
			},
			"templateMentionRequest": {
				"oneOf": [
					{
						"$ref": "#/components/schemas/templateMentionDateTemplateMentionRequest"
					},
					{
						"$ref": "#/components/schemas/templateMentionUserTemplateMentionRequest"
					}
				]
			},
			"templateMentionResponse": {
				"oneOf": [
					{
						"$ref": "#/components/schemas/templateMentionDateTemplateMentionResponse"
					},
					{
						"$ref": "#/components/schemas/templateMentionUserTemplateMentionResponse"
					}
				]
			},
			"templateMentionUserTemplateMentionRequest": {
				"type": "object",
				"properties": {
					"type": {
						"type": "string",
						"const": "template_mention_user",
						"description": "Always `template_mention_user`"
					},
					"template_mention_user": {
						"type": "string",
						"const": "me",
						"description": "The user of the template mention."
					}
				},
				"additionalProperties": false,
				"required": ["template_mention_user"],
				"title": "Template Mention User"
			},
			"templateMentionUserTemplateMentionResponse": {
				"type": "object",
				"properties": {
					"type": {
						"type": "string",
						"const": "template_mention_user",
						"description": "Always `template_mention_user`"
					},
					"template_mention_user": {
						"type": "string",
						"const": "me",
						"description": "The user of the template mention."
					}
				},
				"additionalProperties": false,
				"required": ["type", "template_mention_user"],
				"title": "Template Mention User"
			},
			"textRequest": {
				"type": "string",
				"maxLength": 2000,
				"minLength": 1
			},
			"textRichTextItemRequest": {
				"type": "object",
				"properties": {
					"type": {
						"type": "string",
						"const": "text",
						"description": "Always `text`"
					},
					"text": {
						"type": "object",
						"properties": {
							"content": {
								"type": "string",
								"maxLength": 2000,
								"description": "The actual text content of the text."
							},
							"link": {
								"oneOf": [
									{
										"type": "object",
										"properties": {
											"url": {
												"type": "string",
												"examples": ["https://www.notion.com"],
												"description": "The URL of the link."
											}
										},
										"required": ["url"]
									},
									{
										"type": "null"
									}
								],
								"description": "An object with information about any inline link in this text, if included."
							}
						},
						"additionalProperties": false,
						"required": ["content"],
						"description": "If a rich text object's type value is `text`, then the corresponding text field contains an object including the text content and any inline link."
					}
				},
				"required": ["text"],
				"title": "Text"
			},
			"textRichTextItemResponse": {
				"type": "object",
				"properties": {
					"type": {
						"type": "string",
						"const": "text",
						"description": "Always `text`"
					},
					"text": {
						"type": "object",
						"properties": {
							"content": {
								"type": "string",
								"maxLength": 2000,
								"description": "The actual text content of the text."
							},
							"link": {
								"oneOf": [
									{
										"type": "object",
										"properties": {
											"url": {
												"type": "string",
												"examples": ["https://www.notion.com"],
												"description": "The URL of the link."
											}
										},
										"additionalProperties": false,
										"required": ["url"]
									},
									{
										"type": "null"
									}
								],
								"description": "An object with information about any inline link in this text, if included."
							}
						},
						"additionalProperties": false,
						"required": ["content", "link"],
						"description": "If a rich text object's type value is `text`, then the corresponding text field contains an object including the text content and any inline link."
					}
				},
				"required": ["type", "text"],
				"title": "Text"
			},
			"timeZoneRequest": {
				"type": "string",
				"example": "Africa/Abidjan"
			},
			"titleArrayBasedPropertyValueResponse": {
				"type": "object",
				"properties": {
					"type": {
						"type": "string",
						"const": "title",
						"description": "Always `title`"
					},
					"title": {
						"type": "array",
						"items": {
							"$ref": "#/components/schemas/richTextItemResponse"
						},
						"maxItems": 100
					}
				},
				"additionalProperties": false,
				"required": ["type", "title"],
				"title": "Title"
			},
			"titleDatabasePropertyConfigResponse": {
				"type": "object",
				"properties": {
					"type": {
						"type": "string",
						"const": "title",
						"description": "Always `title`"
					},
					"title": {
						"$ref": "#/components/schemas/emptyObject"
					}
				},
				"required": ["type", "title"],
				"title": "Title"
			},
			"titleObjectResponse": {
				"type": "object",
				"properties": {
					"title": {
						"type": "string"
					}
				},
				"required": ["title"]
			},
			"titlePropertyItemObjectResponse": {
				"title": "Title",
				"type": "object",
				"properties": {
					"type": {
						"type": "string",
						"const": "title"
					},
					"title": {
						"$ref": "#/components/schemas/richTextItemResponse"
					},
					"object": {
						"type": "string",
						"const": "property_item"
					},
					"id": {
						"type": "string"
					}
				},
				"required": ["type", "title", "object", "id"]
			},
			"toDoBlockObjectResponse": {
				"title": "To Do",
				"type": "object",
				"properties": {
					"type": {
						"type": "string",
						"const": "to_do"
					},
					"to_do": {
						"type": "object",
						"properties": {
							"rich_text": {
								"type": "array",
								"items": {
									"$ref": "#/components/schemas/richTextItemResponse"
								},
								"maxItems": 100
							},
							"color": {
								"$ref": "#/components/schemas/apiColor"
							},
							"checked": {
								"type": "boolean"
							}
						},
						"required": ["rich_text", "color", "checked"]
					},
					"parent": {
						"$ref": "#/components/schemas/parentForBlockBasedObjectResponse"
					},
					"object": {
						"type": "string",
						"const": "block"
					},
					"id": {
						"type": "string",
						"format": "uuid"
					},
					"created_time": {
						"type": "string",
						"format": "date-time"
					},
					"created_by": {
						"$ref": "#/components/schemas/partialUserObjectResponse"
					},
					"last_edited_time": {
						"type": "string",
						"format": "date-time"
					},
					"last_edited_by": {
						"$ref": "#/components/schemas/partialUserObjectResponse"
					},
					"has_children": {
						"type": "boolean"
					},
					"in_trash": {
						"type": "boolean"
					}
				},
				"required": [
					"type",
					"to_do",
					"parent",
					"object",
					"id",
					"created_time",
					"created_by",
					"last_edited_time",
					"last_edited_by",
					"has_children",
					"in_trash"
				]
			},
			"toggleBlockObjectResponse": {
				"title": "Toggle",
				"type": "object",
				"properties": {
					"type": {
						"type": "string",
						"const": "toggle"
					},
					"toggle": {
						"$ref": "#/components/schemas/contentWithRichTextAndColorResponse"
					},
					"parent": {
						"$ref": "#/components/schemas/parentForBlockBasedObjectResponse"
					},
					"object": {
						"type": "string",
						"const": "block"
					},
					"id": {
						"type": "string",
						"format": "uuid"
					},
					"created_time": {
						"type": "string",
						"format": "date-time"
					},
					"created_by": {
						"$ref": "#/components/schemas/partialUserObjectResponse"
					},
					"last_edited_time": {
						"type": "string",
						"format": "date-time"
					},
					"last_edited_by": {
						"$ref": "#/components/schemas/partialUserObjectResponse"
					},
					"has_children": {
						"type": "boolean"
					},
					"in_trash": {
						"type": "boolean"
					}
				},
				"required": [
					"type",
					"toggle",
					"parent",
					"object",
					"id",
					"created_time",
					"created_by",
					"last_edited_time",
					"last_edited_by",
					"has_children",
					"in_trash"
				]
			},
			"transcriptionBlockResponse": {
				"type": "object",
				"properties": {
					"is_full_page": {
						"type": "boolean"
					},
					"title": {
						"type": "array",
						"items": {
							"$ref": "#/components/schemas/richTextItemResponse"
						},
						"maxItems": 100
					},
					"status": {
						"$ref": "#/components/schemas/apiTranscriptionStatus"
					},
					"children": {
						"$ref": "#/components/schemas/transcriptionChildrenResponse"
					},
					"calendar_event": {
						"$ref": "#/components/schemas/transcriptionCalendarEventResponse"
					},
					"recording": {
						"$ref": "#/components/schemas/transcriptionRecordingResponse"
					}
				},
				"required": ["is_full_page"]
			},
			"transcriptionCalendarEventResponse": {
				"type": "object",
				"properties": {
					"start_time": {
						"type": "string",
						"format": "date-time"
					},
					"end_time": {
						"type": "string",
						"format": "date-time"
					},
					"event_id": {
						"type": "string"
					},
					"attendees": {
						"type": "array",
						"items": {
							"$ref": "#/components/schemas/idRequest"
						},
						"maxItems": 100
					}
				},
				"required": ["start_time", "end_time"]
			},
			"transcriptionChildrenResponse": {
				"type": "object",
				"properties": {
					"summary_block_id": {
						"$ref": "#/components/schemas/idRequest"
					},
					"notes_block_id": {
						"$ref": "#/components/schemas/idRequest"
					},
					"transcript_block_id": {
						"$ref": "#/components/schemas/idRequest"
					}
				}
			},
			"transcriptionRecordingResponse": {
				"type": "object",
				"properties": {
					"start_time": {
						"type": "string",
						"format": "date-time"
					},
					"end_time": {
						"type": "string",
						"format": "date-time"
					}
				}
			},
			"uniqueIdDatabasePropertyConfigResponse": {
				"type": "object",
				"properties": {
					"type": {
						"type": "string",
						"const": "unique_id",
						"description": "Always `unique_id`"
					},
					"unique_id": {
						"type": "object",
						"properties": {
							"prefix": {
								"oneOf": [
									{
										"type": "string"
									},
									{
										"type": "null"
									}
								],
								"description": "The prefix for the unique ID."
							}
						},
						"additionalProperties": false,
						"required": ["prefix"]
					}
				},
				"required": ["type", "unique_id"],
				"title": "Unique Id"
			},
			"uniqueIdPropertyItemObjectResponse": {
				"title": "Unique Id",
				"type": "object",
				"properties": {
					"type": {
						"type": "string",
						"const": "unique_id"
					},
					"unique_id": {
						"type": "object",
						"properties": {
							"prefix": {
								"type": ["string", "null"]
							},
							"number": {
								"type": ["number", "null"]
							}
						},
						"required": ["prefix", "number"]
					},
					"object": {
						"type": "string",
						"const": "property_item"
					},
					"id": {
						"type": "string"
					}
				},
				"required": ["type", "unique_id", "object", "id"]
			},
			"uniqueIdPropertyValueResponse": {
				"type": "object",
				"properties": {
					"prefix": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"number": {
						"oneOf": [
							{
								"type": "number"
							},
							{
								"type": "null"
							}
						]
					}
				},
				"additionalProperties": false,
				"required": ["prefix", "number"]
			},
			"uniqueIdSimplePropertyValueResponse": {
				"type": "object",
				"properties": {
					"type": {
						"type": "string",
						"const": "unique_id",
						"description": "Always `unique_id`"
					},
					"unique_id": {
						"$ref": "#/components/schemas/uniqueIdPropertyValueResponse"
					}
				},
				"additionalProperties": false,
				"required": ["type", "unique_id"],
				"title": "Unique Id"
			},
			"unsupportedBlockObjectResponse": {
				"title": "Unsupported",
				"type": "object",
				"properties": {
					"type": {
						"type": "string",
						"const": "unsupported"
					},
					"unsupported": {
						"type": "object",
						"properties": {
							"block_type": {
								"description": "The underlying block type that is not currently supported by the Public API. Example values include: form, button, drive.",
								"type": "string"
							}
						},
						"required": ["block_type"]
					},
					"parent": {
						"$ref": "#/components/schemas/parentForBlockBasedObjectResponse"
					},
					"object": {
						"type": "string",
						"const": "block"
					},
					"id": {
						"type": "string",
						"format": "uuid"
					},
					"created_time": {
						"type": "string",
						"format": "date-time"
					},
					"created_by": {
						"$ref": "#/components/schemas/partialUserObjectResponse"
					},
					"last_edited_time": {
						"type": "string",
						"format": "date-time"
					},
					"last_edited_by": {
						"$ref": "#/components/schemas/partialUserObjectResponse"
					},
					"has_children": {
						"type": "boolean"
					},
					"in_trash": {
						"type": "boolean"
					}
				},
				"required": [
					"type",
					"unsupported",
					"parent",
					"object",
					"id",
					"created_time",
					"created_by",
					"last_edited_time",
					"last_edited_by",
					"has_children",
					"in_trash"
				]
			},
			"unsupportedFormulaPropertyResponse": {
				"title": "Unsupported",
				"type": "object",
				"properties": {
					"type": {
						"type": "string",
						"const": "unsupported"
					},
					"unsupported": {
						"$ref": "#/components/schemas/emptyObject"
					}
				},
				"required": ["type", "unsupported"]
			},
			"unsupportedFormulaPropertyValueResponse": {
				"type": "object",
				"properties": {
					"type": {
						"type": "string",
						"const": "unsupported",
						"description": "Always `unsupported`"
					},
					"unsupported": {
						"$ref": "#/components/schemas/emptyObject"
					}
				},
				"additionalProperties": false,
				"required": ["type", "unsupported"],
				"title": "Unsupported"
			},
			"unsupportedPartialRollupValueResponse": {
				"type": "object",
				"properties": {
					"type": {
						"type": "string",
						"const": "unsupported",
						"description": "Always `unsupported`"
					},
					"unsupported": {
						"$ref": "#/components/schemas/emptyObject"
					}
				},
				"required": ["type", "unsupported"],
				"title": "Unsupported"
			},
			"urlDatabasePropertyConfigResponse": {
				"type": "object",
				"properties": {
					"type": {
						"type": "string",
						"const": "url",
						"description": "Always `url`"
					},
					"url": {
						"$ref": "#/components/schemas/emptyObject"
					}
				},
				"required": ["type", "url"],
				"title": "Url"
			},
			"urlPropertyItemObjectResponse": {
				"title": "Url",
				"type": "object",
				"properties": {
					"type": {
						"type": "string",
						"const": "url"
					},
					"url": {
						"type": ["string", "null"]
					},
					"object": {
						"type": "string",
						"const": "property_item"
					},
					"id": {
						"type": "string"
					}
				},
				"required": ["type", "url", "object", "id"]
			},
			"urlSimplePropertyValueResponse": {
				"type": "object",
				"properties": {
					"type": {
						"type": "string",
						"const": "url",
						"description": "Always `url`"
					},
					"url": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					}
				},
				"additionalProperties": false,
				"required": ["type", "url"],
				"title": "Url"
			},
			"userObjectResponse": {
				"allOf": [
					{
						"$ref": "#/components/schemas/userObjectResponseCommon"
					},
					{
						"oneOf": [
							{
								"$ref": "#/components/schemas/personUserObjectResponse"
							},
							{
								"$ref": "#/components/schemas/botUserObjectResponse"
							}
						]
					}
				]
			},
			"userObjectResponseCommon": {
				"type": "object",
				"properties": {
					"id": {
						"$ref": "#/components/schemas/idResponse",
						"description": "The ID of the user."
					},
					"object": {
						"type": "string",
						"const": "user",
						"description": "The user object type name."
					},
					"name": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						],
						"description": "The name of the user."
					},
					"avatar_url": {
						"oneOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						],
						"description": "The avatar URL of the user."
					}
				},
				"additionalProperties": false,
				"required": ["id", "object", "name", "avatar_url"]
			},
			"userValueResponse": {
				"oneOf": [
					{
						"$ref": "#/components/schemas/partialUserObjectResponse"
					},
					{
						"$ref": "#/components/schemas/userObjectResponse"
					}
				]
			},
			"verificationPropertyItemObjectResponse": {
				"title": "Verification",
				"type": "object",
				"properties": {
					"type": {
						"type": "string",
						"const": "verification"
					},
					"verification": {
						"anyOf": [
							{
								"$ref": "#/components/schemas/verificationPropertyValueResponse"
							},
							{
								"type": "null"
							}
						]
					},
					"object": {
						"type": "string",
						"const": "property_item"
					},
					"id": {
						"type": "string"
					}
				},
				"required": ["type", "verification", "object", "id"]
			},
			"verificationPropertyResponse": {
				"type": "object",
				"properties": {
					"state": {
						"type": "string",
						"enum": ["verified", "expired"],
						"description": "One of: `verified`, `expired`"
					},
					"date": {
						"oneOf": [
							{
								"$ref": "#/components/schemas/dateResponse"
							},
							{
								"type": "null"
							}
						]
					},
					"verified_by": {
						"oneOf": [
							{
								"$ref": "#/components/schemas/userValueResponse"
							},
							{
								"type": "null"
							}
						]
					}
				},
				"additionalProperties": false,
				"required": ["state", "date", "verified_by"],
				"title": "Verified"
			},
			"verificationPropertyUnverifiedResponse": {
				"type": "object",
				"properties": {
					"state": {
						"type": "string",
						"const": "unverified",
						"description": "Always `unverified`"
					},
					"date": {
						"type": "null"
					},
					"verified_by": {
						"type": "null"
					}
				},
				"additionalProperties": false,
				"required": ["state", "date", "verified_by"],
				"title": "Unverified"
			},
			"verificationPropertyValueResponse": {
				"oneOf": [
					{
						"$ref": "#/components/schemas/verificationPropertyUnverifiedResponse"
					},
					{
						"$ref": "#/components/schemas/verificationPropertyResponse"
					}
				]
			},
			"verificationSimplePropertyValueResponse": {
				"type": "object",
				"properties": {
					"type": {
						"type": "string",
						"const": "verification",
						"description": "Always `verification`"
					},
					"verification": {
						"oneOf": [
							{
								"$ref": "#/components/schemas/verificationPropertyValueResponse"
							},
							{
								"type": "null"
							}
						]
					}
				},
				"additionalProperties": false,
				"required": ["type", "verification"],
				"title": "Verification"
			},
			"videoBlockObjectResponse": {
				"title": "Video",
				"type": "object",
				"properties": {
					"type": {
						"type": "string",
						"const": "video"
					},
					"video": {
						"$ref": "#/components/schemas/mediaContentWithFileAndCaptionResponse"
					},
					"parent": {
						"$ref": "#/components/schemas/parentForBlockBasedObjectResponse"
					},
					"object": {
						"type": "string",
						"const": "block"
					},
					"id": {
						"type": "string",
						"format": "uuid"
					},
					"created_time": {
						"type": "string",
						"format": "date-time"
					},
					"created_by": {
						"$ref": "#/components/schemas/partialUserObjectResponse"
					},
					"last_edited_time": {
						"type": "string",
						"format": "date-time"
					},
					"last_edited_by": {
						"$ref": "#/components/schemas/partialUserObjectResponse"
					},
					"has_children": {
						"type": "boolean"
					},
					"in_trash": {
						"type": "boolean"
					}
				},
				"required": [
					"type",
					"video",
					"parent",
					"object",
					"id",
					"created_time",
					"created_by",
					"last_edited_time",
					"last_edited_by",
					"has_children",
					"in_trash"
				]
			},
			"workflowNestedViewFilter": {
				"required": ["type", "operator", "filters"],
				"properties": {
					"type": {
						"description": "Selects the filter or filter-value variant.",
						"const": "group"
					},
					"operator": {
						"description": "Comparison or Boolean operation applied by this filter.",
						"enum": ["and", "or"]
					},
					"filters": {
						"description": "Child filters combined by the Boolean group operator.",
						"maxItems": 100,
						"type": "array",
						"items": {
							"oneOf": [
								{
									"$ref": "#/components/schemas/workflowPropertyFilter"
								}
							]
						}
					}
				},
				"additionalProperties": false,
				"type": "object"
			},
			"workflowPropertyFilter": {
				"description": "Filter applied to a single property.",
				"oneOf": [
					{
						"$ref": "#/components/schemas/EmptyPropertyFilter"
					},
					{
						"$ref": "#/components/schemas/TextFilter"
					},
					{
						"$ref": "#/components/schemas/NumberFilter"
					},
					{
						"$ref": "#/components/schemas/DateFilter"
					},
					{
						"$ref": "#/components/schemas/SelectFilter"
					},
					{
						"$ref": "#/components/schemas/MultiSelectFilter"
					},
					{
						"$ref": "#/components/schemas/CheckboxFilter"
					},
					{
						"$ref": "#/components/schemas/RelationFilter"
					},
					{
						"$ref": "#/components/schemas/StatusFilter"
					},
					{
						"$ref": "#/components/schemas/PersonFilter"
					},
					{
						"$ref": "#/components/schemas/VerificationFilter"
					},
					{
						"$ref": "#/components/schemas/FormulaFilter"
					},
					{
						"$ref": "#/components/schemas/RollupFilter"
					}
				]
			},
			"workflowViewFilter": {
				"required": ["type", "operator", "filters"],
				"properties": {
					"type": {
						"description": "Selects the filter or filter-value variant.",
						"const": "group"
					},
					"operator": {
						"description": "Comparison or Boolean operation applied by this filter.",
						"enum": ["and", "or"]
					},
					"filters": {
						"description": "Child filters combined by the Boolean group operator.",
						"maxItems": 100,
						"type": "array",
						"items": {
							"oneOf": [
								{
									"$ref": "#/components/schemas/workflowPropertyFilter"
								},
								{
									"$ref": "#/components/schemas/workflowNestedViewFilter"
								}
							]
						}
					}
				},
				"additionalProperties": false,
				"type": "object"
			},
			"workspaceParentForBlockBasedObjectResponse": {
				"type": "object",
				"properties": {
					"type": {
						"type": "string",
						"const": "workspace",
						"description": "The parent type."
					},
					"workspace": {
						"type": "boolean",
						"const": true,
						"description": "Always true for workspace parent."
					}
				},
				"additionalProperties": false,
				"required": ["type", "workspace"]
			}
		},
		"parameters": {
			"notionVersion": {
				"name": "Notion-Version",
				"in": "header",
				"required": true,
				"schema": {
					"enum": ["2026-03-11"]
				},
				"description": "The [API version](/reference/versioning) to use for this request. The latest version is `2026-03-11`."
			}
		}
	},
	"paths": {
		"/v1/groups/{group_id}/members": {
			"post": {
				"summary": "Add a group member",
				"operationId": "add-group-member",
				"tags": ["Internal"],
				"x-hidden": true,
				"x-noIndex": true,
				"parameters": [
					{
						"name": "group_id",
						"in": "path",
						"required": true,
						"schema": {
							"$ref": "#/components/schemas/idRequest",
							"description": "The ID of the group."
						}
					},
					{
						"$ref": "#/components/parameters/notionVersion"
					}
				],
				"requestBody": {
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"type": "object",
								"properties": {
									"member": {
										"type": "object",
										"properties": {
											"type": {
												"type": "string",
												"const": "user",
												"description": "The type of member."
											},
											"user_id": {
												"$ref": "#/components/schemas/idRequest",
												"description": "The ID of the user to add."
											}
										},
										"required": ["type", "user_id"],
										"description": "The user to add as a direct member."
									},
									"role": {
										"type": "string",
										"enum": ["owner", "member"],
										"description": "The user's role in the group."
									}
								},
								"required": ["member", "role"]
							}
						}
					}
				},
				"responses": {
					"200": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/groupMembershipObjectResponse"
								}
							}
						}
					},
					"400": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_400"
								}
							}
						}
					},
					"401": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_401"
								}
							}
						}
					},
					"403": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_403"
								}
							}
						}
					},
					"404": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_404"
								}
							}
						}
					},
					"406": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_406"
								}
							}
						}
					},
					"409": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_409"
								}
							}
						}
					},
					"429": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_429"
								}
							}
						}
					},
					"500": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_500"
								}
							}
						}
					},
					"503": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_503"
								}
							}
						}
					},
					"504": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_504"
								}
							}
						}
					},
					"529": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_529"
								}
							}
						}
					}
				}
			},
			"get": {
				"summary": "List group members",
				"operationId": "list-group-members",
				"tags": ["Internal"],
				"x-hidden": true,
				"x-noIndex": true,
				"parameters": [
					{
						"name": "group_id",
						"in": "path",
						"required": true,
						"schema": {
							"$ref": "#/components/schemas/idRequest",
							"description": "The ID of the group."
						}
					},
					{
						"name": "page_size",
						"in": "query",
						"schema": {
							"type": "integer",
							"minimum": 1,
							"maximum": 100,
							"description": "The number of items from the full list desired in the response. Maximum: 100"
						}
					},
					{
						"name": "start_cursor",
						"in": "query",
						"schema": {
							"type": "string",
							"description": "If supplied, this endpoint returns a page of results starting after the opaque cursor provided."
						}
					},
					{
						"$ref": "#/components/parameters/notionVersion"
					}
				],
				"responses": {
					"200": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"object": {
											"type": "string",
											"const": "list",
											"description": "Always `list`"
										},
										"type": {
											"type": "string",
											"const": "group_membership",
											"description": "Always `group_membership`"
										},
										"group_membership": {
											"$ref": "#/components/schemas/emptyObject"
										},
										"results": {
											"type": "array",
											"items": {
												"$ref": "#/components/schemas/groupMembershipObjectResponse"
											},
											"maxItems": 100,
											"description": "The direct user memberships in the group."
										},
										"has_more": {
											"type": "boolean",
											"description": "Whether there are more results available."
										},
										"next_cursor": {
											"oneOf": [
												{
													"type": "string"
												},
												{
													"type": "null"
												}
											],
											"description": "The cursor to use for the next page of results, or null if there are no more results."
										}
									},
									"additionalProperties": false,
									"required": [
										"object",
										"type",
										"group_membership",
										"results",
										"has_more",
										"next_cursor"
									]
								}
							}
						}
					},
					"400": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_400"
								}
							}
						}
					},
					"401": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_401"
								}
							}
						}
					},
					"403": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_403"
								}
							}
						}
					},
					"404": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_404"
								}
							}
						}
					},
					"406": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_406"
								}
							}
						}
					},
					"409": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_409"
								}
							}
						}
					},
					"429": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_429"
								}
							}
						}
					},
					"500": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_500"
								}
							}
						}
					},
					"503": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_503"
								}
							}
						}
					},
					"504": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_504"
								}
							}
						}
					},
					"529": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_529"
								}
							}
						}
					}
				}
			}
		},
		"/v1/external/decagon": {
			"post": {
				"summary": "Tools for Decagon's CX chatbot",
				"operationId": "external-decagon",
				"security": [
					{
						"basicAuth": []
					}
				],
				"tags": ["Internal"],
				"x-hidden": true,
				"x-noIndex": true,
				"parameters": [
					{
						"$ref": "#/components/parameters/notionVersion"
					}
				],
				"requestBody": {
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"anyOf": [
									{
										"type": "object",
										"properties": {
											"tool": {
												"type": "string",
												"const": "educationEmailVerification"
											},
											"user_id": {
												"type": "string"
											}
										},
										"required": ["tool", "user_id"]
									},
									{
										"type": "object",
										"properties": {
											"tool": {
												"type": "string",
												"const": "refundEligibility"
											},
											"space_id": {
												"type": "string"
											}
										},
										"required": ["tool", "space_id"]
									},
									{
										"type": "object",
										"properties": {
											"tool": {
												"type": "string",
												"const": "getFreeChartsForSpace"
											},
											"space_id": {
												"type": "string"
											}
										},
										"required": ["tool", "space_id"]
									},
									{
										"type": "object",
										"properties": {
											"tool": {
												"type": "string",
												"const": "optOutNotionAIDataSharing"
											},
											"user_id": {
												"type": "string"
											}
										},
										"required": ["tool", "user_id"]
									},
									{
										"type": "object",
										"properties": {
											"tool": {
												"type": "string",
												"const": "isWorkspaceDeleted"
											},
											"space_id": {
												"type": "string"
											}
										},
										"required": ["tool", "space_id"]
									},
									{
										"type": "object",
										"properties": {
											"tool": {
												"type": "string",
												"const": "getGtmNextBestAction"
											},
											"user_id": {
												"type": "string"
											},
											"space_id": {
												"type": "string"
											},
											"strategy_id": {
												"type": "string"
											},
											"epoch": {
												"type": "number"
											},
											"signature": {
												"type": "string"
											}
										},
										"required": [
											"tool",
											"user_id",
											"space_id",
											"strategy_id",
											"epoch",
											"signature"
										]
									}
								]
							}
						}
					}
				},
				"responses": {
					"200": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"anyOf": [
										{
											"type": "object",
											"properties": {
												"tool": {
													"type": "string",
													"const": "educationEmailVerification"
												},
												"is_education_email": {
													"type": "boolean"
												}
											},
											"required": ["tool", "is_education_email"]
										},
										{
											"type": "object",
											"properties": {
												"tool": {
													"type": "string",
													"const": "refundEligibility"
												},
												"subscription_exists": {
													"type": "boolean",
													"const": false
												}
											},
											"required": ["tool", "subscription_exists"]
										},
										{
											"type": "object",
											"properties": {
												"tool": {
													"type": "string",
													"const": "refundEligibility"
												},
												"subscription_exists": {
													"type": "boolean",
													"const": true
												},
												"is_eligible": {
													"type": "boolean",
													"const": true
												},
												"product_name": {
													"type": "string",
													"enum": []
												},
												"invoice_id": {
													"type": "string"
												},
												"eligible_amount": {
													"type": "number"
												},
												"eligible_currency": {
													"type": "string"
												},
												"reason": {
													"type": "string"
												}
											},
											"required": [
												"tool",
												"subscription_exists",
												"is_eligible",
												"product_name",
												"invoice_id",
												"eligible_amount",
												"eligible_currency",
												"reason"
											]
										},
										{
											"type": "object",
											"properties": {
												"tool": {
													"type": "string",
													"const": "refundEligibility"
												},
												"subscription_exists": {
													"type": "boolean",
													"const": true
												},
												"is_eligible": {
													"type": "boolean",
													"const": false
												},
												"reason": {
													"type": "string"
												}
											},
											"required": [
												"tool",
												"subscription_exists",
												"is_eligible",
												"reason"
											]
										},
										{
											"type": "object",
											"properties": {
												"tool": {
													"type": "string",
													"const": "getFreeChartsForSpace"
												},
												"hasFreeChart": {
													"type": "boolean"
												},
												"spaceCanViewUnlimitedCharts": {
													"type": "boolean"
												},
												"freeChartIds": {
													"type": "array",
													"items": {
														"type": "string"
													}
												},
												"freeChartUrls": {
													"type": "array",
													"items": {
														"type": ["string", "null"]
													}
												}
											},
											"required": [
												"tool",
												"hasFreeChart",
												"spaceCanViewUnlimitedCharts",
												"freeChartIds",
												"freeChartUrls"
											]
										},
										{
											"type": "object",
											"properties": {
												"tool": {
													"type": "string",
													"const": "optOutNotionAIDataSharing"
												},
												"success": {
													"type": "boolean"
												}
											},
											"required": ["tool", "success"]
										},
										{
											"type": "object",
											"properties": {
												"tool": {
													"type": "string",
													"const": "isWorkspaceDeleted"
												},
												"isDeleted": {
													"type": "boolean"
												}
											},
											"required": ["tool", "isDeleted"]
										},
										{
											"type": "object",
											"properties": {
												"tool": {
													"type": "string",
													"const": "getGtmNextBestAction"
												},
												"success": {
													"type": "boolean",
													"const": true
												},
												"outcome": {
													"description": "Why the pipeline returned a recommendation or no action. Request success does not imply recommendation content exists.",
													"type": "string",
													"enum": [
														"action_returned",
														"no_milestone_metadata",
														"invalid_entity_type",
														"unsupported_entity_type",
														"unsupported_selection_mode",
														"invalid_frequency_cap",
														"message_limit_cached",
														"cached_decision_invalid",
														"strategy_not_found",
														"strategy_not_released",
														"strategy_resolution_failed",
														"strategy_control_group",
														"strategy_request_source_mismatch",
														"cx_reactive_disabled",
														"cx_reactive_policy_incomplete",
														"no_milestone_selected",
														"persisted_message_content_unresolved",
														"aimn_prerequisite_failed",
														"no_eligible_message_for_selected_milestone"
													]
												},
												"decisionId": {
													"type": "string"
												},
												"milestoneKey": {
													"type": "string"
												},
												"actionKey": {
													"type": "string"
												},
												"contentOnlyMessage": {
													"type": "object",
													"properties": {
														"channel": {
															"type": "string"
														},
														"messageId": {
															"type": "string"
														},
														"parentMessageId": {
															"type": "string"
														},
														"locale": {
															"type": "string"
														},
														"messageContent": {
															"type": "string"
														}
													},
													"required": [
														"channel",
														"messageId",
														"parentMessageId",
														"locale",
														"messageContent"
													]
												}
											},
											"required": ["tool", "success", "outcome"]
										},
										{
											"type": "object",
											"properties": {
												"tool": {
													"type": "string",
													"const": "getGtmNextBestAction"
												},
												"success": {
													"type": "boolean",
													"const": false
												},
												"outcome": {
													"type": "string",
													"enum": [
														"action_returned",
														"no_milestone_metadata",
														"invalid_entity_type",
														"unsupported_entity_type",
														"unsupported_selection_mode",
														"invalid_frequency_cap",
														"message_limit_cached",
														"cached_decision_invalid",
														"strategy_not_found",
														"strategy_not_released",
														"strategy_resolution_failed",
														"strategy_control_group",
														"strategy_request_source_mismatch",
														"cx_reactive_disabled",
														"cx_reactive_policy_incomplete",
														"no_milestone_selected",
														"persisted_message_content_unresolved",
														"aimn_prerequisite_failed",
														"no_eligible_message_for_selected_milestone"
													]
												},
												"message": {
													"type": "string"
												}
											},
											"required": ["tool", "success"]
										}
									]
								}
							}
						}
					},
					"400": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_oauth_400"
								}
							}
						}
					},
					"401": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_oauth_401"
								}
							}
						}
					},
					"403": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_oauth_403"
								}
							}
						}
					},
					"500": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_oauth_500"
								}
							}
						}
					}
				}
			}
		},
		"/v1/external/refundEligibility": {
			"get": {
				"summary": "Check if a user is eligible for a refund",
				"operationId": "external-refund-eligibility",
				"security": [
					{
						"basicAuth": []
					}
				],
				"tags": ["Internal"],
				"x-hidden": true,
				"x-noIndex": true,
				"parameters": [
					{
						"name": "space_id",
						"in": "query",
						"schema": {
							"type": "string"
						}
					},
					{
						"$ref": "#/components/parameters/notionVersion"
					}
				],
				"requestBody": {
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"type": "object",
								"properties": {
									"space_id": {
										"type": "string"
									}
								}
							}
						}
					}
				},
				"responses": {
					"200": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"anyOf": [
										{
											"type": "object",
											"properties": {
												"subscription_exists": {
													"type": "boolean",
													"const": false
												}
											},
											"required": ["subscription_exists"]
										},
										{
											"type": "object",
											"properties": {
												"subscription_exists": {
													"type": "boolean",
													"const": true
												},
												"is_eligible": {
													"type": "boolean",
													"const": true
												},
												"product_name": {
													"type": "string",
													"enum": []
												},
												"invoice_id": {
													"type": "string"
												},
												"eligible_amount": {
													"type": "number"
												},
												"eligible_currency": {
													"type": "string"
												},
												"reason": {
													"type": "string"
												},
												"invoice_generated_date": {
													"type": "string"
												}
											},
											"required": [
												"subscription_exists",
												"is_eligible",
												"product_name",
												"invoice_id",
												"eligible_amount",
												"eligible_currency",
												"reason",
												"invoice_generated_date"
											]
										},
										{
											"type": "object",
											"properties": {
												"subscription_exists": {
													"type": "boolean",
													"const": true
												},
												"is_eligible": {
													"type": "boolean",
													"const": false
												},
												"reason": {
													"type": "string"
												}
											},
											"required": [
												"subscription_exists",
												"is_eligible",
												"reason"
											]
										}
									]
								}
							}
						}
					},
					"400": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_oauth_400"
								}
							}
						}
					},
					"401": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_oauth_401"
								}
							}
						}
					},
					"403": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_oauth_403"
								}
							}
						}
					},
					"500": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_oauth_500"
								}
							}
						}
					}
				}
			}
		},
		"/v1/external/userC360Profile": {
			"post": {
				"summary": "Fetch a user's C360 lifecycle signals for Decagon chat init",
				"operationId": "external-user-c360-profile",
				"security": [
					{
						"basicAuth": []
					}
				],
				"tags": ["Internal"],
				"x-hidden": true,
				"x-noIndex": true,
				"parameters": [
					{
						"$ref": "#/components/parameters/notionVersion"
					}
				],
				"requestBody": {
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"type": "object",
								"properties": {
									"user_id": {
										"type": "string"
									},
									"epoch": {
										"type": "number"
									},
									"signature": {
										"type": "string"
									}
								},
								"required": ["user_id", "epoch", "signature"]
							}
						}
					}
				},
				"responses": {
					"200": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"signals": {
											"type": "object",
											"properties": {
												"user-attributes.sophistication_score": {
													"type": ["string", "null"]
												},
												"user-attributes.job_seniority": {
													"type": ["string", "null"]
												},
												"user-attributes.email_type": {
													"type": ["string", "null"]
												},
												"user-attributes.used_ai_l28": {
													"type": ["boolean", "null"]
												},
												"user-attributes.has_active_ai_add_on": {
													"type": ["boolean", "null"]
												},
												"user-attributes.was_w1_wac": {
													"type": ["boolean", "null"]
												},
												"user-attributes.is_w2_wac": {
													"type": ["boolean", "null"]
												},
												"user-attributes.was_w2_wac": {
													"type": ["boolean", "null"]
												},
												"user-attributes.is_l7_active": {
													"type": ["boolean", "null"]
												},
												"user-attributes.is_l14_active": {
													"type": ["boolean", "null"]
												},
												"user-attributes.is_l28_active": {
													"type": ["boolean", "null"]
												},
												"user-attributes.meeting_bucket": {
													"type": ["string", "null"]
												},
												"user-attributes.meeting_first_usage_date": {
													"type": ["string", "null"]
												},
												"user-attributes.meeting_n_meetings_recorded": {
													"type": ["integer", "null"]
												},
												"user-attributes.meeting_total_minutes": {
													"type": ["number", "null"]
												},
												"user-attribution.signup_time": {
													"type": ["string", "null"]
												},
												"workspace_eligibility.subscription_tier": {
													"type": ["string", "null"]
												},
												"workspace_eligibility.ai_credit_exhausted": {
													"type": ["boolean", "null"]
												},
												"workspace_eligibility.member_count": {
													"type": ["integer", "null"]
												},
												"potential-seats.seat_count": {
													"type": ["integer", "null"]
												},
												"potential-seats.any_pending_invite": {
													"type": ["boolean", "null"]
												},
												"feature-usage.l28_ai_agent_active_days": {
													"type": ["integer", "null"]
												},
												"feature-usage.l28_ai_connector_search_active_days": {
													"type": ["integer", "null"]
												},
												"feature-usage.l28_ai_meeting_notes_active_days": {
													"type": ["integer", "null"]
												},
												"feature-usage.l28_collection_creates_days": {
													"type": ["integer", "null"]
												},
												"feature-usage.l28_comments_days": {
													"type": ["integer", "null"]
												},
												"feature-usage.l28_configure_db_view_days": {
													"type": ["integer", "null"]
												},
												"feature-usage.l28_configure_property_days": {
													"type": ["integer", "null"]
												},
												"feature-usage.l28_create_db_property_days": {
													"type": ["integer", "null"]
												},
												"feature-usage.l28_enterprise_ai_search_active_days": {
													"type": ["integer", "null"]
												},
												"feature-usage.l28_filter_or_sort_db_days": {
													"type": ["integer", "null"]
												},
												"feature-usage.l28_page_shares_days": {
													"type": ["integer", "null"]
												},
												"feature-usage.l28_space_invite_days": {
													"type": ["integer", "null"]
												},
												"database-events.create_database_28d": {
													"type": ["integer", "null"]
												},
												"database-events.create_database_cumulative": {
													"type": ["integer", "null"]
												},
												"database-events.create_relation_28d": {
													"type": ["integer", "null"]
												},
												"database-events.create_property_28d": {
													"type": ["integer", "null"]
												},
												"collaboration-graph.content_viewer_count": {
													"type": ["integer", "null"]
												},
												"collaboration-graph.is_hub_in_any_space": {
													"type": ["boolean", "null"]
												},
												"ai-limit.approaching_ai_limit_l28": {
													"type": ["integer", "null"]
												},
												"ai-limit.hit_ai_limit_l28": {
													"type": ["integer", "null"]
												},
												"ai-credit-spend.ai_credit_usage": {
													"type": ["number", "null"]
												},
												"ai-meeting-notes.dictation_start_count": {
													"type": ["integer", "null"]
												}
											},
											"required": [
												"user-attributes.sophistication_score",
												"user-attributes.job_seniority",
												"user-attributes.email_type",
												"user-attributes.used_ai_l28",
												"user-attributes.has_active_ai_add_on",
												"user-attributes.was_w1_wac",
												"user-attributes.is_w2_wac",
												"user-attributes.was_w2_wac",
												"user-attributes.is_l7_active",
												"user-attributes.is_l14_active",
												"user-attributes.is_l28_active",
												"user-attributes.meeting_bucket",
												"user-attributes.meeting_first_usage_date",
												"user-attributes.meeting_n_meetings_recorded",
												"user-attributes.meeting_total_minutes",
												"user-attribution.signup_time",
												"workspace_eligibility.subscription_tier",
												"workspace_eligibility.ai_credit_exhausted",
												"workspace_eligibility.member_count",
												"potential-seats.seat_count",
												"potential-seats.any_pending_invite",
												"feature-usage.l28_ai_agent_active_days",
												"feature-usage.l28_ai_connector_search_active_days",
												"feature-usage.l28_ai_meeting_notes_active_days",
												"feature-usage.l28_collection_creates_days",
												"feature-usage.l28_comments_days",
												"feature-usage.l28_configure_db_view_days",
												"feature-usage.l28_configure_property_days",
												"feature-usage.l28_create_db_property_days",
												"feature-usage.l28_enterprise_ai_search_active_days",
												"feature-usage.l28_filter_or_sort_db_days",
												"feature-usage.l28_page_shares_days",
												"feature-usage.l28_space_invite_days",
												"database-events.create_database_28d",
												"database-events.create_database_cumulative",
												"database-events.create_relation_28d",
												"database-events.create_property_28d",
												"collaboration-graph.content_viewer_count",
												"collaboration-graph.is_hub_in_any_space",
												"ai-limit.approaching_ai_limit_l28",
												"ai-limit.hit_ai_limit_l28",
												"ai-credit-spend.ai_credit_usage",
												"ai-meeting-notes.dictation_start_count"
											]
										},
										"enabled": {
											"type": "boolean"
										},
										"request_id": {
											"type": "string",
											"format": "uuid"
										}
									},
									"required": ["signals", "enabled"]
								}
							}
						}
					},
					"400": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_oauth_400"
								}
							}
						}
					},
					"401": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_oauth_401"
								}
							}
						}
					},
					"403": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_oauth_403"
								}
							}
						}
					},
					"500": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_oauth_500"
								}
							}
						}
					}
				}
			}
		},
		"/v1/agents/{agent_id}/chat": {
			"post": {
				"summary": "Chat with agent",
				"operationId": "chat-with-agent",
				"tags": ["Internal"],
				"x-hidden": true,
				"x-noIndex": true,
				"parameters": [
					{
						"name": "agent_id",
						"in": "path",
						"required": true,
						"schema": {
							"oneOf": [
								{
									"$ref": "#/components/schemas/idRequest"
								},
								{
									"type": "string",
									"enum": ["notion_ai", "33333333-3333-3333-3333-333333333333"],
									"description": "One of: `notion_ai`, `33333333-3333-3333-3333-333333333333`"
								}
							],
							"description": "The ID of the agent to chat with. Use a UUID for custom agents or `notion_ai` for Notion Agent (personal agent); the reserved UUID `33333333-3333-3333-3333-333333333333` remains supported for backward compatibility."
						}
					},
					{
						"name": "verbose",
						"in": "query",
						"schema": {
							"type": "boolean",
							"description": "Whether to include agent thinking and structured message content parts. Defaults to false."
						}
					},
					{
						"$ref": "#/components/parameters/notionVersion"
					}
				],
				"requestBody": {
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"type": "object",
								"properties": {
									"message": {
										"type": "string",
										"maxLength": 10000,
										"description": "The message to send to the agent."
									},
									"attachments": {
										"type": "array",
										"items": {
											"type": "object",
											"properties": {
												"file_upload": {
													"type": "object",
													"properties": {
														"id": {
															"type": "string",
															"description": "ID of a FileUpload object that has the status `uploaded`."
														}
													},
													"additionalProperties": false,
													"required": ["id"],
													"description": "ID of a FileUpload object that has the status `uploaded`."
												},
												"type": {
													"type": "string",
													"const": "file_upload",
													"description": "The type of the attachment. Only supports \"file_upload\"."
												},
												"name": {
													"type": "string",
													"description": "An optional display name override for the attachment."
												}
											},
											"additionalProperties": false,
											"required": ["file_upload"]
										},
										"maxItems": 100,
										"description": "An array of file uploads to attach to this chat turn. Use the File Upload APIs to create uploads and pass their IDs here."
									},
									"metadata": {
										"type": "object",
										"additionalProperties": {
											"type": "string",
											"maxLength": 2000
										},
										"maxProperties": 20,
										"description": "Optional caller-provided string metadata persisted with the user message. user_id is used for lifecycle correlation and does not change authorization."
									},
									"prompt_context": {
										"type": "string",
										"maxLength": 10000,
										"description": "Additional caller-provided context for the agent to consider while responding."
									},
									"thread_id": {
										"$ref": "#/components/schemas/idRequest",
										"description": "Deprecated. Use POST /v1/threads/:thread_id/messages to continue an existing thread. If not provided, a new thread will be created.",
										"deprecated": true
									}
								},
								"additionalProperties": false
							}
						}
					}
				},
				"responses": {
					"200": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"object": {
											"type": "string",
											"const": "chat.invocation",
											"description": "Always `chat.invocation`"
										},
										"agent_id": {
											"type": "string"
										},
										"thread_id": {
											"type": "string"
										},
										"invocation_id": {
											"type": "string"
										},
										"status": {
											"type": "string",
											"const": "pending",
											"description": "Always `pending`"
										}
									},
									"additionalProperties": false,
									"required": [
										"object",
										"agent_id",
										"thread_id",
										"invocation_id",
										"status"
									]
								}
							},
							"application/x-ndjson": {
								"schema": {
									"type": "string",
									"description": "Newline-delimited JSON (NDJSON) stream. Each line is a JSON-encoded chat stream chunk."
								}
							}
						}
					},
					"400": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_400"
								}
							}
						}
					},
					"401": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_401"
								}
							}
						}
					},
					"403": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_403"
								}
							}
						}
					},
					"404": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_404"
								}
							}
						}
					},
					"406": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_406"
								}
							}
						}
					},
					"409": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_409"
								}
							}
						}
					},
					"429": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_429"
								}
							}
						}
					},
					"500": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_500"
								}
							}
						}
					},
					"503": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_503"
								}
							}
						}
					},
					"504": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_504"
								}
							}
						}
					},
					"529": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_529"
								}
							}
						}
					}
				},
				"deprecated": true,
				"x-notion-docs-ref": "https://developers.notion.com/reference/internal/chat-with-agent"
			}
		},
		"/v1/agents/{agent_id}/chatStream": {
			"post": {
				"summary": "Chat with agent (streaming)",
				"operationId": "chat-with-agent-stream",
				"tags": ["Internal"],
				"x-hidden": true,
				"x-noIndex": true,
				"parameters": [
					{
						"name": "agent_id",
						"in": "path",
						"required": true,
						"schema": {
							"oneOf": [
								{
									"$ref": "#/components/schemas/idRequest"
								},
								{
									"type": "string",
									"enum": ["notion_ai", "33333333-3333-3333-3333-333333333333"],
									"description": "One of: `notion_ai`, `33333333-3333-3333-3333-333333333333`"
								}
							],
							"description": "The ID of the agent to chat with. Use a UUID for custom agents or `notion_ai` for Notion Agent (personal agent); the reserved UUID `33333333-3333-3333-3333-333333333333` remains supported for backward compatibility."
						}
					},
					{
						"name": "verbose",
						"in": "query",
						"schema": {
							"type": "boolean",
							"description": "Whether to include agent thinking and structured message content parts. Defaults to false."
						}
					},
					{
						"$ref": "#/components/parameters/notionVersion"
					}
				],
				"requestBody": {
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"type": "object",
								"properties": {
									"message": {
										"type": "string",
										"maxLength": 10000,
										"description": "The message to send to the agent."
									},
									"attachments": {
										"type": "array",
										"items": {
											"type": "object",
											"properties": {
												"file_upload": {
													"type": "object",
													"properties": {
														"id": {
															"type": "string",
															"description": "ID of a FileUpload object that has the status `uploaded`."
														}
													},
													"additionalProperties": false,
													"required": ["id"],
													"description": "ID of a FileUpload object that has the status `uploaded`."
												},
												"type": {
													"type": "string",
													"const": "file_upload",
													"description": "The type of the attachment. Only supports \"file_upload\"."
												},
												"name": {
													"type": "string",
													"description": "An optional display name override for the attachment."
												}
											},
											"additionalProperties": false,
											"required": ["file_upload"]
										},
										"maxItems": 100,
										"description": "An array of file uploads to attach to this chat turn. Use the File Upload APIs to create uploads and pass their IDs here."
									},
									"metadata": {
										"type": "object",
										"additionalProperties": {
											"type": "string",
											"maxLength": 2000
										},
										"maxProperties": 20,
										"description": "Optional caller-provided string metadata persisted with the user message. user_id is used for lifecycle correlation and does not change authorization."
									},
									"prompt_context": {
										"type": "string",
										"maxLength": 10000,
										"description": "Additional caller-provided context for the agent to consider while responding."
									},
									"thread_id": {
										"$ref": "#/components/schemas/idRequest",
										"description": "The ID of an existing thread to continue the conversation. If not provided, a new thread will be created."
									}
								},
								"additionalProperties": false
							}
						}
					}
				},
				"responses": {
					"200": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"oneOf": [
										{
											"type": "object",
											"properties": {
												"type": {
													"type": "string",
													"const": "message",
													"description": "Always `message`"
												},
												"invocation_id": {
													"type": "string"
												},
												"id": {
													"$ref": "#/components/schemas/idResponse"
												},
												"role": {
													"type": "string",
													"enum": ["user", "agent"],
													"description": "One of: `user`, `agent`"
												},
												"content": {
													"type": "string"
												},
												"delta": {
													"type": "string",
													"description": "Text appended since the previous chunk for this message. Empty for metadata-only updates. If previously emitted text is revised, this contains the full current text. The cumulative `content` field remains authoritative."
												},
												"attachments": {
													"type": "array",
													"items": {
														"type": "object",
														"properties": {
															"name": {
																"type": "string"
															},
															"content_type": {
																"type": "string"
															},
															"url": {
																"type": "string"
															},
															"expiry_time": {
																"type": "string",
																"format": "date-time",
																"description": "The time when the attachment URL will expire."
															}
														},
														"additionalProperties": false,
														"required": ["name", "content_type", "url"]
													},
													"maxItems": 100
												},
												"content_parts": {
													"type": "array",
													"items": {
														"oneOf": [
															{
																"type": "object",
																"properties": {
																	"type": {
																		"type": "string",
																		"const": "text",
																		"description": "Always `text`"
																	},
																	"text": {
																		"type": "string"
																	}
																},
																"additionalProperties": false,
																"required": ["type", "text"]
															},
															{
																"type": "object",
																"properties": {
																	"type": {
																		"type": "string",
																		"const": "thinking",
																		"description": "Always `thinking`"
																	},
																	"text": {
																		"type": "string"
																	}
																},
																"additionalProperties": false,
																"required": ["type", "text"]
															},
															{
																"type": "object",
																"properties": {
																	"type": {
																		"type": "string",
																		"const": "tool_call",
																		"description": "Always `tool_call`"
																	},
																	"tool_call_id": {
																		"oneOf": [
																			{
																				"type": "string"
																			},
																			{
																				"type": "null"
																			}
																		]
																	},
																	"tool_name": {
																		"type": "string"
																	},
																	"results": {
																		"type": "array",
																		"items": {
																			"type": "object",
																			"properties": {
																				"id": {
																					"$ref": "#/components/schemas/idResponse"
																				},
																				"agent_step_id": {
																					"oneOf": [
																						{
																							"$ref": "#/components/schemas/idResponse"
																						},
																						{
																							"type": "null"
																						}
																					]
																				},
																				"tool_call_id": {
																					"oneOf": [
																						{
																							"type": "string"
																						},
																						{
																							"type": "null"
																						}
																					]
																				},
																				"tool_name": {
																					"type": "string"
																				},
																				"tool_type": {
																					"type": "string"
																				},
																				"state": {
																					"type": "string"
																				},
																				"started_at": {
																					"type": "integer",
																					"minimum": 0
																				},
																				"finished_at": {
																					"oneOf": [
																						{
																							"type": "integer",
																							"minimum": 0
																						},
																						{
																							"type": "null"
																						}
																					]
																				},
																				"duration_ms": {
																					"oneOf": [
																						{
																							"type": "integer",
																							"minimum": 0
																						},
																						{
																							"type": "null"
																						}
																					]
																				}
																			},
																			"additionalProperties": false,
																			"required": [
																				"id",
																				"agent_step_id",
																				"tool_call_id",
																				"tool_name",
																				"tool_type",
																				"state",
																				"started_at",
																				"finished_at",
																				"duration_ms"
																			]
																		}
																	}
																},
																"additionalProperties": false,
																"required": [
																	"type",
																	"tool_call_id",
																	"tool_name"
																]
															},
															{
																"type": "object",
																"properties": {
																	"type": {
																		"type": "string",
																		"const": "follow_ups",
																		"description": "Always `follow_ups`"
																	},
																	"follow_ups": {
																		"type": "array",
																		"items": {
																			"type": "object",
																			"properties": {
																				"label": {
																					"type": "string"
																				},
																				"message": {
																					"type": "string"
																				}
																			},
																			"additionalProperties": false,
																			"required": ["label", "message"]
																		}
																	}
																},
																"additionalProperties": false,
																"required": ["type", "follow_ups"]
															},
															{
																"type": "object",
																"properties": {
																	"type": {
																		"type": "string",
																		"const": "custom_agent_template_picker",
																		"description": "Always `custom_agent_template_picker`"
																	}
																},
																"additionalProperties": false,
																"required": ["type"]
															}
														]
													},
													"maxItems": 100
												}
											},
											"additionalProperties": false,
											"required": [
												"type",
												"invocation_id",
												"id",
												"role",
												"content",
												"delta"
											],
											"title": "Message"
										},
										{
											"type": "object",
											"properties": {
												"type": {
													"type": "string",
													"const": "tool",
													"description": "Always `tool`"
												},
												"invocation_id": {
													"type": "string"
												},
												"id": {
													"$ref": "#/components/schemas/idResponse"
												},
												"category": {
													"type": "string",
													"enum": [
														"search",
														"read",
														"write",
														"compute",
														"other"
													],
													"description": "Stable, coarse category suitable for displaying progress without exposing internal tool details."
												},
												"status": {
													"type": "string",
													"enum": [
														"pending",
														"running",
														"waiting_for_user",
														"completed",
														"failed"
													],
													"description": "One of: `pending`, `running`, `waiting_for_user`, `completed`, `failed`"
												},
												"agent_step_id": {
													"oneOf": [
														{
															"$ref": "#/components/schemas/idResponse"
														},
														{
															"type": "null"
														}
													]
												},
												"tool_call_id": {
													"oneOf": [
														{
															"type": "string"
														},
														{
															"type": "null"
														}
													]
												},
												"tool_name": {
													"type": "string"
												},
												"tool_type": {
													"type": "string"
												}
											},
											"additionalProperties": false,
											"required": [
												"type",
												"invocation_id",
												"id",
												"category",
												"status"
											],
											"title": "Tool"
										},
										{
											"type": "object",
											"properties": {
												"type": {
													"type": "string",
													"const": "started",
													"description": "Always `started`"
												},
												"invocation_id": {
													"type": "string"
												},
												"thread_id": {
													"$ref": "#/components/schemas/idResponse"
												},
												"agent_id": {
													"type": "string",
													"description": "The agent identifier. The personal agent is always `notion_ai`; custom-agent IDs are UUIDs."
												},
												"model": {
													"type": "string",
													"description": "Configured model identifier, or `auto` when model routing has not resolved yet."
												},
												"metadata": {
													"type": "object",
													"additionalProperties": {
														"type": "string",
														"maxLength": 2000
													},
													"description": "Caller-provided string metadata echoed from the chat request. user_id is the lifecycle correlation key and does not change authorization."
												}
											},
											"additionalProperties": false,
											"required": [
												"type",
												"invocation_id",
												"thread_id",
												"agent_id",
												"model"
											],
											"title": "Started"
										},
										{
											"type": "object",
											"properties": {
												"type": {
													"type": "string",
													"const": "done",
													"description": "Always `done`"
												},
												"invocation_id": {
													"type": "string"
												},
												"status": {
													"type": "string",
													"enum": ["completed", "requires_action", "canceled"],
													"description": "One of: `completed`, `requires_action`, `canceled`"
												},
												"thread_id": {
													"$ref": "#/components/schemas/idResponse"
												},
												"model": {
													"type": "string"
												},
												"usage": {
													"type": "object",
													"properties": {
														"total_tokens": {
															"type": "integer",
															"minimum": 0
														}
													},
													"additionalProperties": false,
													"required": ["total_tokens"]
												},
												"duration_ms": {
													"type": "integer",
													"minimum": 0
												},
												"connections_used": {
													"type": "array",
													"items": {
														"type": "string"
													},
													"maxItems": 100
												},
												"artifacts": {
													"type": "array",
													"items": {
														"oneOf": [
															{
																"type": "object",
																"properties": {
																	"type": {
																		"type": "string",
																		"const": "page",
																		"description": "Always `page`"
																	},
																	"url": {
																		"type": "string"
																	},
																	"title": {
																		"type": "string"
																	}
																},
																"additionalProperties": false,
																"required": ["type", "url", "title"]
															},
															{
																"type": "object",
																"properties": {
																	"type": {
																		"type": "string",
																		"const": "html_artifact",
																		"description": "Always `html_artifact`"
																	},
																	"url": {
																		"type": "string"
																	},
																	"page_url": {
																		"type": "string"
																	}
																},
																"additionalProperties": false,
																"required": ["type", "url", "page_url"]
															}
														],
														"title": "Chat stream artifact"
													},
													"maxItems": 100
												},
												"metadata": {
													"type": "object",
													"additionalProperties": {
														"type": "string",
														"maxLength": 2000
													},
													"description": "Caller-provided string metadata echoed from the chat request. user_id is the lifecycle correlation key and does not change authorization."
												},
												"pending_user_actions": {
													"type": "array",
													"items": {
														"type": "object",
														"properties": {
															"id": {
																"$ref": "#/components/schemas/idResponse"
															},
															"type": {
																"type": "string",
																"const": "tool_confirmation",
																"description": "Always `tool_confirmation`"
															},
															"title": {
																"type": "string"
															},
															"requirements": {
																"type": "array",
																"items": {
																	"oneOf": [
																		{
																			"type": "object",
																			"properties": {
																				"type": {
																					"type": "string",
																					"const": "general",
																					"description": "Always `general`"
																				}
																			},
																			"additionalProperties": false,
																			"required": ["type"]
																		},
																		{
																			"type": "object",
																			"properties": {
																				"type": {
																					"type": "string",
																					"const": "manage_workers",
																					"description": "Always `manage_workers`"
																				}
																			},
																			"additionalProperties": false,
																			"required": ["type"]
																		},
																		{
																			"type": "object",
																			"properties": {
																				"type": {
																					"type": "string",
																					"const": "url_safety",
																					"description": "Always `url_safety`"
																				},
																				"urls": {
																					"type": "array",
																					"items": {
																						"type": "string"
																					}
																				},
																				"required_by_workspace_policy": {
																					"type": "boolean"
																				}
																			},
																			"additionalProperties": false,
																			"required": ["type", "urls"]
																		},
																		{
																			"type": "object",
																			"properties": {
																				"type": {
																					"type": "string",
																					"const": "permission_escalation",
																					"description": "Always `permission_escalation`"
																				},
																				"destination_title": {
																					"type": "string"
																				},
																				"source_titles": {
																					"type": "array",
																					"items": {
																						"type": "string"
																					}
																				}
																			},
																			"additionalProperties": false,
																			"required": ["type"]
																		},
																		{
																			"type": "object",
																			"properties": {
																				"type": {
																					"type": "string",
																					"const": "delete_content",
																					"description": "Always `delete_content`"
																				},
																				"page_count": {
																					"type": "integer",
																					"minimum": 0
																				},
																				"database_count": {
																					"type": "integer",
																					"minimum": 0
																				},
																				"meeting_notes_block_count": {
																					"type": "integer",
																					"minimum": 0
																				}
																			},
																			"additionalProperties": false,
																			"required": [
																				"type",
																				"page_count",
																				"database_count"
																			]
																		},
																		{
																			"type": "object",
																			"properties": {
																				"type": {
																					"type": "string",
																					"const": "connect_integration",
																					"description": "Always `connect_integration`"
																				},
																				"integration_type": {
																					"type": "string"
																				},
																				"integration_name": {
																					"type": "string"
																				},
																				"handoff_url": {
																					"type": "string"
																				}
																			},
																			"additionalProperties": false,
																			"required": [
																				"type",
																				"integration_type",
																				"integration_name",
																				"handoff_url"
																			]
																		},
																		{
																			"type": "object",
																			"properties": {
																				"type": {
																					"type": "string",
																					"const": "admin_mode",
																					"description": "Always `admin_mode`"
																				},
																				"explanation": {
																					"type": "string"
																				}
																			},
																			"additionalProperties": false,
																			"required": ["type"]
																		}
																	],
																	"title": "Pending user action requirement"
																}
															},
															"options": {
																"type": "array",
																"items": {
																	"oneOf": [
																		{
																			"type": "object",
																			"properties": {
																				"id": {
																					"type": "string",
																					"const": "approve",
																					"description": "Always `approve`"
																				},
																				"label": {
																					"type": "string"
																				}
																			},
																			"additionalProperties": false,
																			"required": ["id", "label"]
																		},
																		{
																			"type": "object",
																			"properties": {
																				"id": {
																					"type": "string",
																					"const": "reject",
																					"description": "Always `reject`"
																				},
																				"label": {
																					"type": "string"
																				}
																			},
																			"additionalProperties": false,
																			"required": ["id", "label"]
																		},
																		{
																			"type": "object",
																			"properties": {
																				"id": {
																					"type": "string",
																					"const": "use_connection",
																					"description": "Always `use_connection`"
																				},
																				"label": {
																					"type": "string"
																				},
																				"input": {
																					"type": "object",
																					"properties": {
																						"type": {
																							"type": "string",
																							"const": "connection_id",
																							"description": "Always `connection_id`"
																						},
																						"required": {
																							"type": "boolean",
																							"const": true,
																							"description": "Always `true`"
																						}
																					},
																					"additionalProperties": false,
																					"required": ["type", "required"]
																				}
																			},
																			"additionalProperties": false,
																			"required": ["id", "label", "input"]
																		}
																	],
																	"title": "Pending user action option"
																}
															}
														},
														"additionalProperties": false,
														"required": [
															"id",
															"type",
															"title",
															"requirements",
															"options"
														]
													},
													"maxItems": 100
												}
											},
											"additionalProperties": false,
											"required": [
												"type",
												"invocation_id",
												"status",
												"thread_id",
												"model",
												"usage",
												"duration_ms",
												"connections_used",
												"artifacts"
											],
											"title": "Done"
										},
										{
											"type": "object",
											"properties": {
												"type": {
													"type": "string",
													"const": "waiting_for_user",
													"description": "Always `waiting_for_user`"
												},
												"invocation_id": {
													"type": "string"
												},
												"pending_user_actions": {
													"type": "array",
													"items": {
														"type": "object",
														"properties": {
															"id": {
																"$ref": "#/components/schemas/idResponse"
															},
															"type": {
																"type": "string",
																"const": "tool_confirmation",
																"description": "Always `tool_confirmation`"
															},
															"title": {
																"type": "string"
															},
															"requirements": {
																"type": "array",
																"items": {
																	"oneOf": [
																		{
																			"type": "object",
																			"properties": {
																				"type": {
																					"type": "string",
																					"const": "general",
																					"description": "Always `general`"
																				}
																			},
																			"additionalProperties": false,
																			"required": ["type"]
																		},
																		{
																			"type": "object",
																			"properties": {
																				"type": {
																					"type": "string",
																					"const": "manage_workers",
																					"description": "Always `manage_workers`"
																				}
																			},
																			"additionalProperties": false,
																			"required": ["type"]
																		},
																		{
																			"type": "object",
																			"properties": {
																				"type": {
																					"type": "string",
																					"const": "url_safety",
																					"description": "Always `url_safety`"
																				},
																				"urls": {
																					"type": "array",
																					"items": {
																						"type": "string"
																					}
																				},
																				"required_by_workspace_policy": {
																					"type": "boolean"
																				}
																			},
																			"additionalProperties": false,
																			"required": ["type", "urls"]
																		},
																		{
																			"type": "object",
																			"properties": {
																				"type": {
																					"type": "string",
																					"const": "permission_escalation",
																					"description": "Always `permission_escalation`"
																				},
																				"destination_title": {
																					"type": "string"
																				},
																				"source_titles": {
																					"type": "array",
																					"items": {
																						"type": "string"
																					}
																				}
																			},
																			"additionalProperties": false,
																			"required": ["type"]
																		},
																		{
																			"type": "object",
																			"properties": {
																				"type": {
																					"type": "string",
																					"const": "delete_content",
																					"description": "Always `delete_content`"
																				},
																				"page_count": {
																					"type": "integer",
																					"minimum": 0
																				},
																				"database_count": {
																					"type": "integer",
																					"minimum": 0
																				},
																				"meeting_notes_block_count": {
																					"type": "integer",
																					"minimum": 0
																				}
																			},
																			"additionalProperties": false,
																			"required": [
																				"type",
																				"page_count",
																				"database_count"
																			]
																		},
																		{
																			"type": "object",
																			"properties": {
																				"type": {
																					"type": "string",
																					"const": "connect_integration",
																					"description": "Always `connect_integration`"
																				},
																				"integration_type": {
																					"type": "string"
																				},
																				"integration_name": {
																					"type": "string"
																				},
																				"handoff_url": {
																					"type": "string"
																				}
																			},
																			"additionalProperties": false,
																			"required": [
																				"type",
																				"integration_type",
																				"integration_name",
																				"handoff_url"
																			]
																		},
																		{
																			"type": "object",
																			"properties": {
																				"type": {
																					"type": "string",
																					"const": "admin_mode",
																					"description": "Always `admin_mode`"
																				},
																				"explanation": {
																					"type": "string"
																				}
																			},
																			"additionalProperties": false,
																			"required": ["type"]
																		}
																	],
																	"title": "Pending user action requirement"
																}
															},
															"options": {
																"type": "array",
																"items": {
																	"oneOf": [
																		{
																			"type": "object",
																			"properties": {
																				"id": {
																					"type": "string",
																					"const": "approve",
																					"description": "Always `approve`"
																				},
																				"label": {
																					"type": "string"
																				}
																			},
																			"additionalProperties": false,
																			"required": ["id", "label"]
																		},
																		{
																			"type": "object",
																			"properties": {
																				"id": {
																					"type": "string",
																					"const": "reject",
																					"description": "Always `reject`"
																				},
																				"label": {
																					"type": "string"
																				}
																			},
																			"additionalProperties": false,
																			"required": ["id", "label"]
																		},
																		{
																			"type": "object",
																			"properties": {
																				"id": {
																					"type": "string",
																					"const": "use_connection",
																					"description": "Always `use_connection`"
																				},
																				"label": {
																					"type": "string"
																				},
																				"input": {
																					"type": "object",
																					"properties": {
																						"type": {
																							"type": "string",
																							"const": "connection_id",
																							"description": "Always `connection_id`"
																						},
																						"required": {
																							"type": "boolean",
																							"const": true,
																							"description": "Always `true`"
																						}
																					},
																					"additionalProperties": false,
																					"required": ["type", "required"]
																				}
																			},
																			"additionalProperties": false,
																			"required": ["id", "label", "input"]
																		}
																	],
																	"title": "Pending user action option"
																}
															}
														},
														"additionalProperties": false,
														"required": [
															"id",
															"type",
															"title",
															"requirements",
															"options"
														]
													},
													"maxItems": 100
												}
											},
											"additionalProperties": false,
											"required": [
												"type",
												"invocation_id",
												"pending_user_actions"
											],
											"title": "Waiting for user"
										},
										{
											"type": "object",
											"properties": {
												"type": {
													"type": "string",
													"const": "error",
													"description": "Always `error`"
												},
												"code": {
													"type": "string",
													"enum": [
														"invalid_json",
														"invalid_request_url",
														"invalid_request",
														"missing_version",
														"invalid_beta",
														"validation_error",
														"unauthorized",
														"restricted_resource",
														"object_not_found",
														"directory_not_found",
														"rate_limited",
														"service_overload",
														"internal_server_error",
														"service_unavailable",
														"gateway_timeout",
														"conflict_error",
														"idempotency_key_reused",
														"row_limit_exceeded",
														"status_change_not_allowed",
														"agent_deleted",
														"invalid_credit_limit",
														"workspace_credits_exhausted",
														"agent_credit_limit_reached"
													],
													"description": "Programmatic error code. Matches the error codes used by non-streaming Public API endpoints."
												},
												"message": {
													"type": "string"
												},
												"additional_data": {
													"type": "object",
													"additionalProperties": {
														"oneOf": [
															{
																"type": "string"
															},
															{
																"type": "array",
																"items": {
																	"type": "string"
																},
																"maxItems": 100
															}
														]
													}
												},
												"invocation_id": {
													"type": "string",
													"description": "Present after the invocation is accepted; absent for pre-acceptance errors."
												},
												"usage": {
													"type": "object",
													"properties": {
														"total_tokens": {
															"type": "integer",
															"minimum": 0
														}
													},
													"additionalProperties": false,
													"required": ["total_tokens"]
												}
											},
											"additionalProperties": false,
											"required": ["type", "code", "message"],
											"title": "Error"
										}
									],
									"title": "Chat stream chunk",
									"description": "A single NDJSON chunk from the chat streaming response. Each line in the stream is one of these chunk types."
								}
							},
							"application/x-ndjson": {
								"schema": {
									"type": "string",
									"description": "Newline-delimited JSON (NDJSON) stream. Each line is a JSON-encoded chunk object."
								}
							}
						}
					}
				},
				"deprecated": true,
				"x-notion-docs-ref": "https://developers.notion.com/reference/internal/chat-with-agent-stream"
			}
		},
		"/v1/threads/{thread_id}/continue": {
			"post": {
				"summary": "Continue a thread",
				"operationId": "continue-thread",
				"tags": ["Internal"],
				"x-hidden": true,
				"x-noIndex": true,
				"parameters": [
					{
						"name": "thread_id",
						"in": "path",
						"required": true,
						"schema": {
							"$ref": "#/components/schemas/idRequest",
							"description": "The ID of the thread."
						}
					},
					{
						"$ref": "#/components/parameters/notionVersion"
					}
				],
				"requestBody": {
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"oneOf": [
									{
										"type": "object",
										"properties": {
											"action_id": {
												"$ref": "#/components/schemas/idRequest"
											},
											"option_id": {
												"type": "string",
												"enum": ["approve", "reject"],
												"description": "One of: `approve`, `reject`"
											}
										},
										"additionalProperties": false,
										"required": ["action_id", "option_id"]
									},
									{
										"type": "object",
										"properties": {
											"action_id": {
												"$ref": "#/components/schemas/idRequest"
											},
											"option_id": {
												"type": "string",
												"const": "use_connection",
												"description": "Always `use_connection`"
											},
											"input": {
												"type": "object",
												"properties": {
													"connection_id": {
														"$ref": "#/components/schemas/idRequest"
													}
												},
												"additionalProperties": false,
												"required": ["connection_id"]
											}
										},
										"additionalProperties": false,
										"required": ["action_id", "option_id", "input"]
									}
								],
								"title": "Continue thread request",
								"description": "A response to one pending user action."
							}
						}
					}
				},
				"responses": {
					"200": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"object": {
											"type": "string",
											"const": "chat.invocation",
											"description": "Always `chat.invocation`"
										},
										"agent_id": {
											"type": "string"
										},
										"thread_id": {
											"type": "string"
										},
										"invocation_id": {
											"type": "string"
										},
										"status": {
											"type": "string",
											"const": "pending",
											"description": "Always `pending`"
										}
									},
									"additionalProperties": false,
									"required": [
										"object",
										"agent_id",
										"thread_id",
										"invocation_id",
										"status"
									]
								}
							}
						}
					},
					"400": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_400"
								}
							}
						}
					},
					"401": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_401"
								}
							}
						}
					},
					"403": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_403"
								}
							}
						}
					},
					"404": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_404"
								}
							}
						}
					},
					"406": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_406"
								}
							}
						}
					},
					"409": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_409"
								}
							}
						}
					},
					"429": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_429"
								}
							}
						}
					},
					"500": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_500"
								}
							}
						}
					},
					"503": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_503"
								}
							}
						}
					},
					"504": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_504"
								}
							}
						}
					},
					"529": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_529"
								}
							}
						}
					}
				},
				"deprecated": true
			}
		},
		"/v1/external_agent_stub/{agent_id}/vaults": {
			"post": {
				"summary": "Create external agent stub vault",
				"operationId": "create-external-agent-stub-vault",
				"tags": ["Internal"],
				"x-hidden": true,
				"x-noIndex": true,
				"parameters": [
					{
						"name": "agent_id",
						"in": "path",
						"required": true,
						"schema": {
							"oneOf": [
								{
									"$ref": "#/components/schemas/idRequest"
								},
								{
									"type": "string",
									"const": "33333333-3333-3333-3333-333333333333",
									"description": "Always `33333333-3333-3333-3333-333333333333`"
								}
							],
							"description": "The ID of the agent backing this external agent session."
						}
					},
					{
						"$ref": "#/components/parameters/notionVersion"
					}
				],
				"requestBody": {
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"type": "object",
								"properties": {
									"name": {
										"type": "string",
										"maxLength": 200,
										"description": "Provider-defined vault name."
									},
									"credential": {
										"type": "object",
										"properties": {
											"value": {
												"type": "string",
												"description": "Write-only bearer credential."
											},
											"expires_at": {
												"type": "string",
												"maxLength": 100,
												"description": "Credential expiry as an RFC 3339 instant."
											}
										},
										"required": ["value", "expires_at"],
										"description": "Write-only credential input."
									},
									"target": {
										"type": "object",
										"properties": {
											"type": {
												"type": "string",
												"const": "mcp_server",
												"description": "MCP server target."
											},
											"server_url": {
												"type": "string",
												"maxLength": 2000,
												"description": "The exact target server URL."
											},
											"authorization": {
												"type": "object",
												"properties": {
													"type": {
														"type": "string",
														"const": "bearer",
														"description": "Bearer authorization."
													}
												},
												"required": ["type"],
												"description": "Target authorization metadata."
											}
										},
										"required": ["type", "server_url", "authorization"],
										"description": "Credential target."
									}
								},
								"required": ["name", "credential", "target"]
							}
						}
					}
				},
				"responses": {
					"200": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"id": {
											"type": "string"
										},
										"name": {
											"type": "string"
										},
										"credential": {
											"type": "object",
											"properties": {
												"expires_at": {
													"type": "string"
												}
											},
											"additionalProperties": false,
											"required": ["expires_at"]
										},
										"target": {
											"type": "object",
											"properties": {
												"type": {
													"type": "string",
													"const": "mcp_server",
													"description": "Always `mcp_server`"
												},
												"server_url": {
													"type": "string"
												},
												"authorization": {
													"type": "object",
													"properties": {
														"type": {
															"type": "string",
															"const": "bearer",
															"description": "Always `bearer`"
														}
													},
													"additionalProperties": false,
													"required": ["type"]
												}
											},
											"additionalProperties": false,
											"required": ["type", "server_url", "authorization"]
										},
										"status": {
											"type": "string",
											"enum": ["active", "expired"],
											"description": "One of: `active`, `expired`"
										},
										"version": {
											"type": "integer",
											"minimum": 1
										},
										"created_at": {
											"type": "string"
										},
										"updated_at": {
											"type": "string"
										}
									},
									"additionalProperties": false,
									"required": [
										"id",
										"name",
										"credential",
										"target",
										"status",
										"version",
										"created_at",
										"updated_at"
									]
								}
							}
						}
					},
					"400": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_400"
								}
							}
						}
					},
					"401": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_401"
								}
							}
						}
					},
					"403": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_403"
								}
							}
						}
					},
					"404": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_404"
								}
							}
						}
					},
					"406": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_406"
								}
							}
						}
					},
					"409": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_409"
								}
							}
						}
					},
					"429": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_429"
								}
							}
						}
					},
					"500": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_500"
								}
							}
						}
					},
					"503": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_503"
								}
							}
						}
					},
					"504": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_504"
								}
							}
						}
					},
					"529": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_529"
								}
							}
						}
					}
				},
				"x-notion-docs-ref": "https://developers.notion.com/reference/unreleased/external-agent-apis/create-external-agent-vault"
			}
		},
		"/v1/groups": {
			"post": {
				"summary": "Create a group",
				"operationId": "create-group",
				"tags": ["Internal"],
				"x-hidden": true,
				"x-noIndex": true,
				"parameters": [
					{
						"$ref": "#/components/parameters/notionVersion"
					}
				],
				"requestBody": {
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"type": "object",
								"properties": {
									"name": {
										"type": "string",
										"minLength": 1,
										"maxLength": 200,
										"pattern": "\\S",
										"examples": ["Engineering"],
										"description": "The name of the group."
									}
								},
								"required": ["name"]
							}
						}
					}
				},
				"responses": {
					"200": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/permissionGroupObjectResponse"
								}
							}
						}
					},
					"400": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_400"
								}
							}
						}
					},
					"401": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_401"
								}
							}
						}
					},
					"403": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_403"
								}
							}
						}
					},
					"404": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_404"
								}
							}
						}
					},
					"406": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_406"
								}
							}
						}
					},
					"409": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_409"
								}
							}
						}
					},
					"429": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_429"
								}
							}
						}
					},
					"500": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_500"
								}
							}
						}
					},
					"503": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_503"
								}
							}
						}
					},
					"504": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_504"
								}
							}
						}
					},
					"529": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_529"
								}
							}
						}
					}
				}
			}
		},
		"/v1/meeting_notes": {
			"post": {
				"summary": "Create a full-page meeting note",
				"operationId": "create-meeting-note-page",
				"tags": ["Internal"],
				"x-hidden": true,
				"x-noIndex": true,
				"parameters": [
					{
						"$ref": "#/components/parameters/notionVersion"
					}
				],
				"requestBody": {
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"type": "object",
								"properties": {
									"parent": {
										"oneOf": [
											{
												"type": "object",
												"properties": {
													"type": {
														"type": "string",
														"const": "page_id",
														"description": "Always `page_id`"
													},
													"page_id": {
														"$ref": "#/components/schemas/idRequest",
														"description": "ID of the parent page."
													}
												},
												"additionalProperties": false,
												"required": ["type", "page_id"]
											},
											{
												"type": "object",
												"properties": {
													"type": {
														"type": "string",
														"const": "data_source_id",
														"description": "Always `data_source_id`"
													},
													"data_source_id": {
														"$ref": "#/components/schemas/idRequest",
														"description": "ID of the parent data source."
													}
												},
												"additionalProperties": false,
												"required": ["type", "data_source_id"]
											}
										],
										"description": "Page or data source to create the meeting note in. Defaults to the user's meeting notes database, which is created if they don't have one. Not accepted with calendar_event."
									},
									"title": {
										"type": "string",
										"maxLength": 2000,
										"description": "Title for the meeting note. Not accepted with calendar_event."
									},
									"markdown": {
										"type": "string",
										"description": "Content for the meeting note's Notes tab, as Markdown. Not accepted with calendar_event."
									},
									"calendar_event": {
										"type": "object",
										"properties": {
											"calendar": {
												"type": "object",
												"properties": {
													"account_id": {
														"type": "string",
														"minLength": 1,
														"description": "ID of the calendar account."
													},
													"calendar_id": {
														"type": "string",
														"minLength": 1,
														"description": "ID of the calendar."
													}
												},
												"additionalProperties": false,
												"required": ["account_id", "calendar_id"],
												"description": "The calendar the event belongs to."
											},
											"event_id": {
												"type": "string",
												"minLength": 1,
												"description": "ID of the event, as returned by the calendar tools."
											}
										},
										"additionalProperties": false,
										"required": ["calendar", "event_id"],
										"description": "Calendar event to get or create the meeting note for. The meeting note is filed and titled like the event's other meeting notes. Add content to it afterwards."
									},
									"markdown_version": {
										"type": "string",
										"enum": ["v1", "v2"],
										"description": "The Markdown syntax to use. `v2` is [Notion-flavored Markdown](/guides/data-apis/notion-flavored-markdown) and is recommended. `v1` is enhanced markdown. It's deprecated. It's the default on current Notion-Versions. The next Notion-Version rejects `v1` with a `400` `validation_error`."
									}
								},
								"additionalProperties": false
							}
						}
					}
				},
				"responses": {
					"200": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"object": {
											"type": "string",
											"const": "meeting_note_page_result",
											"description": "Always \"meeting_note_page_result\"."
										},
										"meeting_note": {
											"type": "object",
											"properties": {
												"object": {
													"type": "string",
													"const": "block",
													"description": "Always \"block\"."
												},
												"id": {
													"$ref": "#/components/schemas/idResponse",
													"description": "The ID of the meeting note block."
												},
												"type": {
													"type": "string",
													"const": "meeting_notes",
													"description": "Always \"meeting_notes\"."
												},
												"meeting_notes": {
													"type": "object",
													"properties": {
														"is_full_page": {
															"type": "boolean",
															"description": "Whether this is a full-page meeting note."
														},
														"title": {
															"type": "array",
															"items": {
																"$ref": "#/components/schemas/richTextItemResponse"
															},
															"maxItems": 100,
															"description": "Title of the meeting note as rich text."
														},
														"status": {
															"type": "string",
															"enum": [
																"transcription_not_started",
																"transcription_paused",
																"transcription_in_progress",
																"transcription_failed",
																"summary_in_progress",
																"notes_ready"
															],
															"description": "Current processing status of the meeting note transcription."
														},
														"children": {
															"type": "object",
															"properties": {
																"summary_block_id": {
																	"$ref": "#/components/schemas/idResponse",
																	"description": "Block ID of the AI summary tab."
																},
																"notes_block_id": {
																	"$ref": "#/components/schemas/idResponse",
																	"description": "Block ID of the meeting notes tab."
																},
																"transcript_block_id": {
																	"$ref": "#/components/schemas/idResponse",
																	"description": "Block ID of the transcript tab."
																}
															},
															"additionalProperties": false,
															"description": "Block IDs for each tab (summary, notes, transcript)."
														},
														"calendar_event": {
															"type": "object",
															"properties": {
																"start_time": {
																	"type": "string",
																	"description": "ISO-8601 start time of the calendar event."
																},
																"end_time": {
																	"type": "string",
																	"description": "ISO-8601 end time of the calendar event."
																},
																"event_id": {
																	"type": "string",
																	"description": "ID of the calendar event, as returned by the calendar tools."
																},
																"attendees": {
																	"type": "array",
																	"items": {
																		"$ref": "#/components/schemas/idResponse"
																	},
																	"maxItems": 100,
																	"description": "List of attendee user IDs."
																}
															},
															"additionalProperties": false,
															"required": ["start_time", "end_time"],
															"description": "Calendar event metadata associated with this meeting note."
														},
														"recording": {
															"type": "object",
															"properties": {
																"start_time": {
																	"type": "string",
																	"description": "ISO-8601 timestamp when the recording started."
																},
																"end_time": {
																	"type": "string",
																	"description": "ISO-8601 timestamp when the recording ended."
																}
															},
															"additionalProperties": false,
															"description": "Start and end times of the actual recording."
														}
													},
													"additionalProperties": false,
													"required": ["is_full_page"],
													"description": "Meeting note content fields."
												},
												"created_time": {
													"type": "string",
													"description": "ISO-8601 timestamp when this meeting note was created."
												},
												"last_edited_time": {
													"type": "string",
													"description": "ISO-8601 timestamp when this meeting note was last edited."
												},
												"created_by": {
													"$ref": "#/components/schemas/partialUserObjectResponse",
													"description": "User who created this meeting note."
												},
												"last_edited_by": {
													"$ref": "#/components/schemas/partialUserObjectResponse",
													"description": "User who last edited this meeting note."
												},
												"has_children": {
													"type": "boolean",
													"description": "Whether this block has child blocks."
												},
												"in_trash": {
													"type": "boolean",
													"description": "Whether this meeting note is in the trash."
												}
											},
											"additionalProperties": false,
											"required": [
												"object",
												"id",
												"type",
												"meeting_notes",
												"created_time",
												"last_edited_time",
												"created_by",
												"last_edited_by",
												"has_children",
												"in_trash"
											],
											"description": "The full-page meeting note, as a meeting_notes block."
										},
										"created": {
											"type": "boolean",
											"description": "Whether the meeting note was created, rather than an existing meeting note for the event returned."
										}
									},
									"additionalProperties": false,
									"required": ["object", "meeting_note", "created"]
								}
							}
						}
					},
					"400": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_400"
								}
							}
						}
					},
					"401": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_401"
								}
							}
						}
					},
					"403": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_403"
								}
							}
						}
					},
					"404": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_404"
								}
							}
						}
					},
					"406": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_406"
								}
							}
						}
					},
					"409": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_409"
								}
							}
						}
					},
					"429": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_429"
								}
							}
						}
					},
					"500": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_500"
								}
							}
						}
					},
					"503": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_503"
								}
							}
						}
					},
					"504": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_504"
								}
							}
						}
					},
					"529": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_529"
								}
							}
						}
					}
				}
			}
		},
		"/v1/teamspaces": {
			"post": {
				"summary": "Create teamspace",
				"operationId": "create-teamspace",
				"tags": ["Internal"],
				"x-hidden": true,
				"x-noIndex": true,
				"parameters": [
					{
						"$ref": "#/components/parameters/notionVersion"
					}
				],
				"requestBody": {
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"type": "object",
								"properties": {
									"name": {
										"type": "string",
										"examples": ["Engineering Team"],
										"description": "The name of the teamspace to create."
									},
									"visibility": {
										"type": "string",
										"enum": ["default", "open", "closed", "private"],
										"description": "The teamspace's visibility in the workspace. Options include: default, open, closed, private."
									},
									"description": {
										"type": "string",
										"examples": ["Team for engineering projects"],
										"description": "The description for the teamspace."
									},
									"icon": {
										"$ref": "#/components/schemas/pageIconRequest",
										"description": "The icon for the teamspace."
									},
									"settings": {
										"type": "object",
										"properties": {
											"allow_members_to_invite_members": {
												"type": "boolean",
												"description": "When true, members can invite other members. When false, only teamspace owners can. Corresponds to the 'Who can invite or remove teamspace members` setting."
											},
											"allow_members_to_change_sidebar": {
												"type": "boolean",
												"description": "When true, members can edit the sidebar. When false, only teamspace owners can. Corresponds to the `Who can edit teamspace sidebar` setting."
											},
											"disable_invite_link": {
												"type": "boolean",
												"description": "When true, invite links are disabled. Corresponds to the `Invite Link` toggle."
											},
											"disable_public_pages": {
												"type": "boolean",
												"description": "When true, public pages are disabled. Corresponds to the `Disable publishing sites, forms, and public links` toggle."
											},
											"disable_guests": {
												"type": "boolean",
												"description": "When true, guests are disabled and removed from the teamspace. Corresponds to the `Disable guests` toggle."
											},
											"disable_restricted_members": {
												"type": "boolean",
												"description": "When true, restricted members are disabled and removed from the teamspace. Corresponds to the `Disable restricted members` toggle."
											},
											"disable_export": {
												"type": "boolean",
												"description": "When true, exporting pages is disabled. Corresponds to the `Disable export` toggle."
											}
										},
										"description": "The settings of the teamspace."
									}
								},
								"required": ["name", "visibility"]
							}
						}
					}
				},
				"responses": {
					"200": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"object": {
											"type": "string",
											"const": "teamspace",
											"description": "The team object type name."
										},
										"id": {
											"$ref": "#/components/schemas/idResponse",
											"description": "The ID of the teamspace."
										},
										"name": {
											"type": "string",
											"description": "The name of the teamspace."
										},
										"description": {
											"oneOf": [
												{
													"type": "string"
												},
												{
													"type": "null"
												}
											],
											"description": "The description of the teamspace."
										},
										"icon": {
											"oneOf": [
												{
													"$ref": "#/components/schemas/pageIconResponse"
												},
												{
													"type": "null"
												}
											],
											"description": "The icon of the teamspace."
										},
										"in_trash": {
											"type": "boolean",
											"description": "Whether the teamspace is in the trash."
										},
										"visibility": {
											"type": "string",
											"enum": ["default", "open", "closed", "private"],
											"description": "The teamspace's visibility in the workspace."
										},
										"settings": {
											"oneOf": [
												{
													"type": "object",
													"properties": {
														"allow_members_to_invite_members": {
															"type": "boolean",
															"description": "Whether members can invite other members."
														},
														"allow_members_to_change_sidebar": {
															"type": "boolean",
															"description": "Whether members can change the sidebar."
														},
														"disable_invite_link": {
															"type": "boolean",
															"description": "Whether invite links are allowed."
														},
														"disable_public_pages": {
															"type": "boolean",
															"description": "Whether public pages are allowed."
														},
														"disable_guests": {
															"type": "boolean",
															"description": "Whether guests are allowed."
														},
														"disable_restricted_members": {
															"type": "boolean",
															"description": "Whether restricted members are allowed."
														},
														"disable_export": {
															"type": "boolean",
															"description": "Whether export is allowed."
														}
													},
													"additionalProperties": false,
													"required": [
														"allow_members_to_invite_members",
														"allow_members_to_change_sidebar",
														"disable_invite_link",
														"disable_public_pages",
														"disable_guests",
														"disable_restricted_members",
														"disable_export"
													]
												},
												{
													"type": "null"
												}
											],
											"description": "The teamspace's settings."
										}
									},
									"additionalProperties": false,
									"required": [
										"object",
										"id",
										"name",
										"description",
										"icon",
										"in_trash",
										"visibility",
										"settings"
									]
								}
							}
						}
					},
					"400": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_400"
								}
							}
						}
					},
					"401": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_401"
								}
							}
						}
					},
					"403": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_403"
								}
							}
						}
					},
					"404": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_404"
								}
							}
						}
					},
					"406": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_406"
								}
							}
						}
					},
					"409": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_409"
								}
							}
						}
					},
					"429": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_429"
								}
							}
						}
					},
					"500": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_500"
								}
							}
						}
					},
					"503": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_503"
								}
							}
						}
					},
					"504": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_504"
								}
							}
						}
					},
					"529": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_529"
								}
							}
						}
					}
				}
			},
			"get": {
				"summary": "List teamspaces",
				"operationId": "list-teamspaces",
				"tags": ["Internal"],
				"x-hidden": true,
				"x-noIndex": true,
				"parameters": [
					{
						"name": "start_cursor",
						"in": "query",
						"schema": {
							"type": "string",
							"description": "If supplied, this endpoint will return a page of results starting after the cursor provided. If not supplied, this endpoint will return the first page of results."
						}
					},
					{
						"name": "page_size",
						"in": "query",
						"schema": {
							"type": "integer",
							"description": "Number of teamspaces desired in the response."
						}
					},
					{
						"name": "user_id",
						"in": "query",
						"schema": {
							"$ref": "#/components/schemas/idRequest",
							"description": "If provided, returns the teamspaces that the given user can access."
						}
					},
					{
						"$ref": "#/components/parameters/notionVersion"
					}
				],
				"responses": {
					"200": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"object": {
											"type": "string",
											"const": "list",
											"description": "Always `list`"
										},
										"next_cursor": {
											"oneOf": [
												{
													"$ref": "#/components/schemas/idResponse"
												},
												{
													"type": "null"
												}
											]
										},
										"has_more": {
											"type": "boolean"
										},
										"results": {
											"type": "array",
											"items": {
												"type": "object",
												"properties": {
													"object": {
														"type": "string",
														"const": "teamspace",
														"description": "The teamspace object type name."
													},
													"id": {
														"$ref": "#/components/schemas/idResponse",
														"description": "The ID of the teamspace."
													},
													"teamspace_name": {
														"type": "string",
														"description": "The name of the teamspace."
													}
												},
												"additionalProperties": false,
												"required": ["object", "id", "teamspace_name"]
											}
										},
										"type": {
											"type": "string",
											"const": "teamspace",
											"description": "Always `teamspace`"
										},
										"teamspace": {
											"$ref": "#/components/schemas/emptyObject"
										},
										"request_status": {
											"$ref": "#/components/schemas/requestStatusResponse"
										}
									},
									"required": [
										"object",
										"next_cursor",
										"has_more",
										"results",
										"type",
										"teamspace"
									],
									"additionalProperties": false
								}
							}
						}
					},
					"400": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_400"
								}
							}
						}
					},
					"401": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_401"
								}
							}
						}
					},
					"403": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_403"
								}
							}
						}
					},
					"404": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_404"
								}
							}
						}
					},
					"406": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_406"
								}
							}
						}
					},
					"409": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_409"
								}
							}
						}
					},
					"429": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_429"
								}
							}
						}
					},
					"500": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_500"
								}
							}
						}
					},
					"503": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_503"
								}
							}
						}
					},
					"504": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_504"
								}
							}
						}
					},
					"529": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_529"
								}
							}
						}
					}
				}
			}
		},
		"/v1/external_agent_stub/{agent_id}/vaults/{vault_id}": {
			"delete": {
				"summary": "Delete external agent stub vault",
				"operationId": "delete-external-agent-stub-vault",
				"tags": ["Internal"],
				"x-hidden": true,
				"x-noIndex": true,
				"parameters": [
					{
						"name": "agent_id",
						"in": "path",
						"required": true,
						"schema": {
							"oneOf": [
								{
									"$ref": "#/components/schemas/idRequest"
								},
								{
									"type": "string",
									"const": "33333333-3333-3333-3333-333333333333",
									"description": "Always `33333333-3333-3333-3333-333333333333`"
								}
							],
							"description": "The ID of the agent backing this external agent session."
						}
					},
					{
						"name": "vault_id",
						"in": "path",
						"required": true,
						"schema": {
							"type": "string",
							"maxLength": 200,
							"description": "The provider-owned vault ID."
						}
					},
					{
						"$ref": "#/components/parameters/notionVersion"
					}
				],
				"responses": {
					"200": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/emptyObject"
								}
							}
						}
					},
					"400": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_400"
								}
							}
						}
					},
					"401": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_401"
								}
							}
						}
					},
					"403": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_403"
								}
							}
						}
					},
					"404": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_404"
								}
							}
						}
					},
					"406": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_406"
								}
							}
						}
					},
					"409": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_409"
								}
							}
						}
					},
					"429": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_429"
								}
							}
						}
					},
					"500": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_500"
								}
							}
						}
					},
					"503": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_503"
								}
							}
						}
					},
					"504": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_504"
								}
							}
						}
					},
					"529": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_529"
								}
							}
						}
					}
				},
				"x-notion-docs-ref": "https://developers.notion.com/reference/unreleased/external-agent-apis/delete-external-agent-vault"
			},
			"patch": {
				"summary": "Update external agent stub vault",
				"operationId": "update-external-agent-stub-vault",
				"tags": ["Internal"],
				"x-hidden": true,
				"x-noIndex": true,
				"parameters": [
					{
						"name": "agent_id",
						"in": "path",
						"required": true,
						"schema": {
							"oneOf": [
								{
									"$ref": "#/components/schemas/idRequest"
								},
								{
									"type": "string",
									"const": "33333333-3333-3333-3333-333333333333",
									"description": "Always `33333333-3333-3333-3333-333333333333`"
								}
							],
							"description": "The ID of the agent backing this external agent session."
						}
					},
					{
						"name": "vault_id",
						"in": "path",
						"required": true,
						"schema": {
							"type": "string",
							"maxLength": 200,
							"description": "The provider-owned vault ID."
						}
					},
					{
						"$ref": "#/components/parameters/notionVersion"
					}
				],
				"requestBody": {
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"type": "object",
								"properties": {
									"expected_version": {
										"type": "integer",
										"minimum": 1,
										"maximum": 9007199254740990,
										"description": "The last observed vault version."
									},
									"credential": {
										"type": "object",
										"properties": {
											"value": {
												"type": "string",
												"description": "Write-only bearer credential."
											},
											"expires_at": {
												"type": "string",
												"maxLength": 100,
												"description": "Credential expiry as an RFC 3339 instant."
											}
										},
										"required": ["value", "expires_at"],
										"description": "Replacement write-only credential."
									}
								},
								"required": ["expected_version", "credential"]
							}
						}
					}
				},
				"responses": {
					"200": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"id": {
											"type": "string"
										},
										"name": {
											"type": "string"
										},
										"credential": {
											"type": "object",
											"properties": {
												"expires_at": {
													"type": "string"
												}
											},
											"additionalProperties": false,
											"required": ["expires_at"]
										},
										"target": {
											"type": "object",
											"properties": {
												"type": {
													"type": "string",
													"const": "mcp_server",
													"description": "Always `mcp_server`"
												},
												"server_url": {
													"type": "string"
												},
												"authorization": {
													"type": "object",
													"properties": {
														"type": {
															"type": "string",
															"const": "bearer",
															"description": "Always `bearer`"
														}
													},
													"additionalProperties": false,
													"required": ["type"]
												}
											},
											"additionalProperties": false,
											"required": ["type", "server_url", "authorization"]
										},
										"status": {
											"type": "string",
											"enum": ["active", "expired"],
											"description": "One of: `active`, `expired`"
										},
										"version": {
											"type": "integer",
											"minimum": 1
										},
										"created_at": {
											"type": "string"
										},
										"updated_at": {
											"type": "string"
										}
									},
									"additionalProperties": false,
									"required": [
										"id",
										"name",
										"credential",
										"target",
										"status",
										"version",
										"created_at",
										"updated_at"
									]
								}
							}
						}
					},
					"400": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_400"
								}
							}
						}
					},
					"401": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_401"
								}
							}
						}
					},
					"403": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_403"
								}
							}
						}
					},
					"404": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_404"
								}
							}
						}
					},
					"406": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_406"
								}
							}
						}
					},
					"409": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_409"
								}
							}
						}
					},
					"429": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_429"
								}
							}
						}
					},
					"500": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_500"
								}
							}
						}
					},
					"503": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_503"
								}
							}
						}
					},
					"504": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_504"
								}
							}
						}
					},
					"529": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_529"
								}
							}
						}
					}
				},
				"x-notion-docs-ref": "https://developers.notion.com/reference/unreleased/external-agent-apis/update-external-agent-vault"
			}
		},
		"/v1/groups/{group_id}": {
			"delete": {
				"summary": "Delete a group",
				"operationId": "delete-group",
				"tags": ["Internal"],
				"x-hidden": true,
				"x-noIndex": true,
				"parameters": [
					{
						"name": "group_id",
						"in": "path",
						"required": true,
						"schema": {
							"$ref": "#/components/schemas/idRequest",
							"description": "The ID of the group."
						}
					},
					{
						"$ref": "#/components/parameters/notionVersion"
					}
				],
				"requestBody": {
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"type": "object",
								"properties": {
									"transfer_to_owner_id": {
										"$ref": "#/components/schemas/idRequest",
										"description": "The ID of an active workspace owner who will receive access that would otherwise be orphaned."
									}
								}
							}
						}
					}
				},
				"responses": {
					"200": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/permissionGroupObjectResponse"
								}
							}
						}
					},
					"400": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_400"
								}
							}
						}
					},
					"401": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_401"
								}
							}
						}
					},
					"403": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_403"
								}
							}
						}
					},
					"404": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_404"
								}
							}
						}
					},
					"406": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_406"
								}
							}
						}
					},
					"409": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_409"
								}
							}
						}
					},
					"429": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_429"
								}
							}
						}
					},
					"500": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_500"
								}
							}
						}
					},
					"503": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_503"
								}
							}
						}
					},
					"504": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_504"
								}
							}
						}
					},
					"529": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_529"
								}
							}
						}
					}
				}
			},
			"get": {
				"summary": "Retrieve a group",
				"operationId": "retrieve-group",
				"tags": ["Internal"],
				"x-hidden": true,
				"x-noIndex": true,
				"parameters": [
					{
						"name": "group_id",
						"in": "path",
						"required": true,
						"schema": {
							"$ref": "#/components/schemas/idRequest",
							"description": "The ID of the group."
						}
					},
					{
						"$ref": "#/components/parameters/notionVersion"
					}
				],
				"responses": {
					"200": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/permissionGroupObjectResponse"
								}
							}
						}
					},
					"400": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_400"
								}
							}
						}
					},
					"401": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_401"
								}
							}
						}
					},
					"403": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_403"
								}
							}
						}
					},
					"404": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_404"
								}
							}
						}
					},
					"406": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_406"
								}
							}
						}
					},
					"409": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_409"
								}
							}
						}
					},
					"429": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_429"
								}
							}
						}
					},
					"500": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_500"
								}
							}
						}
					},
					"503": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_503"
								}
							}
						}
					},
					"504": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_504"
								}
							}
						}
					},
					"529": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_529"
								}
							}
						}
					}
				}
			},
			"patch": {
				"summary": "Update a group",
				"operationId": "update-group",
				"tags": ["Internal"],
				"x-hidden": true,
				"x-noIndex": true,
				"parameters": [
					{
						"name": "group_id",
						"in": "path",
						"required": true,
						"schema": {
							"$ref": "#/components/schemas/idRequest",
							"description": "The ID of the group."
						}
					},
					{
						"$ref": "#/components/parameters/notionVersion"
					}
				],
				"requestBody": {
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"type": "object",
								"properties": {
									"name": {
										"type": "string",
										"minLength": 1,
										"maxLength": 200,
										"pattern": "\\S",
										"examples": ["Engineering"],
										"description": "The new name of the group."
									}
								},
								"required": ["name"]
							}
						}
					}
				},
				"responses": {
					"200": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/permissionGroupObjectResponse"
								}
							}
						}
					},
					"400": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_400"
								}
							}
						}
					},
					"401": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_401"
								}
							}
						}
					},
					"403": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_403"
								}
							}
						}
					},
					"404": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_404"
								}
							}
						}
					},
					"406": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_406"
								}
							}
						}
					},
					"409": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_409"
								}
							}
						}
					},
					"429": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_429"
								}
							}
						}
					},
					"500": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_500"
								}
							}
						}
					},
					"503": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_503"
								}
							}
						}
					},
					"504": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_504"
								}
							}
						}
					},
					"529": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_529"
								}
							}
						}
					}
				}
			}
		},
		"/v1/export/{id}": {
			"get": {
				"summary": "Export a page",
				"operationId": "export-page",
				"tags": ["Internal"],
				"x-hidden": true,
				"x-noIndex": true,
				"parameters": [
					{
						"name": "id",
						"in": "path",
						"required": true,
						"schema": {
							"$ref": "#/components/schemas/idRequest",
							"description": "The ID of the page or block to export."
						}
					},
					{
						"$ref": "#/components/parameters/notionVersion"
					}
				],
				"responses": {
					"200": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"object": {
											"type": "string",
											"const": "export",
											"description": "The type of object, always 'export'."
										},
										"id": {
											"$ref": "#/components/schemas/idResponse",
											"description": "The ID of the exported page or block."
										},
										"pdf_export_url": {
											"type": "string",
											"description": "URL to download the page export (PDF)."
										},
										"metadata_export_url": {
											"type": "string",
											"description": "URL to download the metadata export (JSON)."
										},
										"comments_export_url": {
											"type": "string",
											"description": "URL to download the comments export (JSON)."
										},
										"attachments_export_url": {
											"type": "string",
											"description": "URL to download the attachments export (JSON)."
										},
										"permissions_export_url": {
											"type": "string",
											"description": "URL to download the permissions export (JSON)."
										}
									},
									"additionalProperties": false,
									"required": [
										"object",
										"id",
										"pdf_export_url",
										"metadata_export_url",
										"comments_export_url",
										"attachments_export_url",
										"permissions_export_url"
									]
								}
							}
						}
					},
					"400": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_400"
								}
							}
						}
					},
					"401": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_401"
								}
							}
						}
					},
					"403": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_403"
								}
							}
						}
					},
					"404": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_404"
								}
							}
						}
					},
					"406": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_406"
								}
							}
						}
					},
					"409": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_409"
								}
							}
						}
					},
					"429": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_429"
								}
							}
						}
					},
					"500": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_500"
								}
							}
						}
					},
					"503": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_503"
								}
							}
						}
					},
					"504": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_504"
								}
							}
						}
					},
					"529": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_529"
								}
							}
						}
					}
				},
				"deprecated": true
			}
		},
		"/v1/rollout/{rollout_id}": {
			"get": {
				"summary": "Get a rollout",
				"operationId": "get-rollout",
				"tags": ["Internal"],
				"x-hidden": true,
				"x-noIndex": true,
				"parameters": [
					{
						"name": "rollout_id",
						"in": "path",
						"required": true,
						"schema": {
							"type": "string",
							"minLength": 1,
							"description": "Identifier returned by `POST /v1/rollout/unified`. Rollouts are readable for up to 7 days."
						}
					},
					{
						"$ref": "#/components/parameters/notionVersion"
					}
				],
				"responses": {
					"200": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"rolloutId": {
											"type": "string",
											"description": "Identifier for this rollout. Use it with GET /v1/rollout/:rollout_id when the result is not terminal."
										},
										"status": {
											"type": "string",
											"enum": ["waiting", "running", "complete", "failed"],
											"description": "Current status of the rollout. Rollouts progress through waiting, running, and then complete or failed."
										},
										"result": {
											"type": "object",
											"properties": {
												"output": {
													"description": "Rollout output."
												},
												"id": {
													"type": "string",
													"description": "Unique execution ID. Present for unified rollout results."
												},
												"input": {
													"description": "Original rollout input. Omitted unless explicitly requested via `response.input`."
												},
												"scores": {
													"description": "Grader results as name-to-score mappings."
												},
												"metadata": {
													"description": "Rollout metadata. Includes post-processor results, grader debug info, raw inference capture under `metadata.logging.rawInferences`, and `metadata.traceUrl` after a successful opt-in Braintrust logging flush."
												},
												"workspaceDelta": {
													"type": "object",
													"properties": {
														"schemaVersion": {
															"type": "number",
															"const": 1,
															"description": "Workspace-delta schema version."
														},
														"completeness": {
															"type": "string",
															"enum": ["complete", "partial", "unevaluable"],
															"description": "Whether the delta contains complete, partial, or unevaluable evidence."
														},
														"resources": {
															"type": "array",
															"items": {},
															"description": "Each entry describes a page or database change. It includes a resource identity, change type, optional displayName and aspects, records, and operationGroupIds. Each record has a pointer, change type, and optional before and after snapshots. Block snapshots keep type, alive, properties, content, format, and additional_property_ids. Collection snapshots keep name, description, icon, cover, schema, alive, format, additional_property_ids, additional_deleted_property_ids, and template_pages. Collection-view snapshots keep type, name, page_sort, alive, format, and query2. Block-property-value snapshots keep property_short_id and property_value. Collection-property-schema snapshots keep alive, property_short_id, and property_schema. The projection removes these top-level fields: permissions, actor IDs, parent and space IDs, timestamps, versions, and deleted-schema metadata. Selected nested values pass through without filtering. They can still contain IDs or other metadata."
														},
														"operationGroups": {
															"type": "array",
															"items": {},
															"description": "Each group links a tool call to resource changes. It has an id, source, and operations. Each operation keeps pointer, relatedPointers, command, path, and deletesPage when present. The projection removes operation arguments and unknown fields."
														},
														"warnings": {
															"type": "array",
															"items": {},
															"description": "Reasons the workspace-delta evidence is partial or unevaluable."
														}
													},
													"additionalProperties": false,
													"required": [
														"schemaVersion",
														"completeness",
														"resources",
														"operationGroups",
														"warnings"
													],
													"description": "Versioned workspace delta for an Agent Service agentCall rollout. Record snapshots keep page content, changed properties, and schema fields for review. The projection removes selected top-level store fields, such as permissions, actor IDs, parent and space IDs, timestamps, versions, and deleted-schema metadata. It copies selected nested values without filtering them. Nested values can still contain IDs or other metadata. The service reads the canonical baseline after the eval session. Edits to a changed record at the same time can affect which changes appear. Completeness and warnings describe operation replay and evidence limits. They do not detect concurrent edits to the canonical workspace. The API returns raw operations only when you request them separately."
												}
											},
											"additionalProperties": false,
											"required": ["output"],
											"description": "Rollout result loaded from AI logging S3. Present when status is `complete`."
										},
										"error": {
											"type": "string",
											"description": "Bounded failure message. Present when status is `failed`, including when the AI logging S3 output payload is no longer readable."
										},
										"progress": {
											"description": "Latest revisioned harness and grader progress. Present while an asynchronous rollout is running and on completion when progress was requested and is available."
										}
									},
									"additionalProperties": false,
									"required": ["rolloutId", "status"]
								}
							}
						}
					},
					"400": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_400"
								}
							}
						}
					},
					"401": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_401"
								}
							}
						}
					},
					"403": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_403"
								}
							}
						}
					},
					"404": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_404"
								}
							}
						}
					},
					"406": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_406"
								}
							}
						}
					},
					"409": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_409"
								}
							}
						}
					},
					"429": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_429"
								}
							}
						}
					},
					"500": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_500"
								}
							}
						}
					},
					"503": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_503"
								}
							}
						}
					},
					"504": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_504"
								}
							}
						}
					},
					"529": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_529"
								}
							}
						}
					}
				}
			}
		},
		"/v1/security_center/posture": {
			"get": {
				"summary": "Get workspace security posture",
				"operationId": "get-security-posture",
				"tags": ["Internal"],
				"x-hidden": true,
				"x-noIndex": true,
				"parameters": [
					{
						"$ref": "#/components/parameters/notionVersion"
					}
				],
				"responses": {
					"200": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"object": {
											"type": "string",
											"const": "security_posture",
											"description": "Always `security_posture`"
										},
										"workspace_id": {
											"$ref": "#/components/schemas/idResponse"
										},
										"captured_at": {
											"type": "string",
											"format": "date-time"
										},
										"scoring_version": {
											"type": "integer",
											"minimum": 0
										},
										"policy_revision": {
											"type": "integer",
											"minimum": 0
										},
										"custom_check_revision": {
											"type": "integer",
											"minimum": 0
										},
										"score": {
											"type": "integer",
											"minimum": 0,
											"maximum": 100
										},
										"categories": {
											"type": "array",
											"items": {
												"type": "object",
												"properties": {
													"category": {
														"type": "string",
														"enum": [
															"authentication",
															"access_control",
															"data_protection",
															"provisioning",
															"audit_monitoring",
															"integration_security"
														],
														"description": "One of: `authentication`, `access_control`, `data_protection`, `provisioning`, `audit_monitoring`, `integration_security`"
													},
													"score": {
														"type": "integer",
														"minimum": 0,
														"maximum": 100
													},
													"resolved_risk_points": {
														"type": "number",
														"minimum": 0
													},
													"open_risk_points": {
														"type": "number",
														"minimum": 0
													},
													"accepted_risk_points": {
														"type": "number",
														"minimum": 0
													},
													"passing_checks": {
														"type": "integer",
														"minimum": 0
													},
													"failing_checks": {
														"type": "integer",
														"minimum": 0
													},
													"not_applicable_checks": {
														"type": "integer",
														"minimum": 0
													},
													"accepted_risks": {
														"type": "integer",
														"minimum": 0
													}
												},
												"additionalProperties": false,
												"required": [
													"category",
													"score",
													"resolved_risk_points",
													"open_risk_points",
													"accepted_risk_points",
													"passing_checks",
													"failing_checks",
													"not_applicable_checks",
													"accepted_risks"
												]
											},
											"maxItems": 6
										},
										"recommendations": {
											"type": "array",
											"items": {
												"type": "object",
												"properties": {
													"check_id": {
														"type": "string"
													},
													"category": {
														"type": "string",
														"enum": [
															"authentication",
															"access_control",
															"data_protection",
															"provisioning",
															"audit_monitoring",
															"integration_security"
														],
														"description": "One of: `authentication`, `access_control`, `data_protection`, `provisioning`, `audit_monitoring`, `integration_security`"
													},
													"severity": {
														"type": "string",
														"enum": ["low", "medium", "high", "critical"],
														"description": "One of: `low`, `medium`, `high`, `critical`"
													},
													"message_source": {
														"type": "string",
														"enum": ["notion", "organization"],
														"description": "One of: `notion`, `organization`"
													},
													"title": {
														"type": "string"
													},
													"why_it_matters": {
														"type": "string"
													},
													"current_state": {
														"type": "string"
													}
												},
												"additionalProperties": false,
												"required": [
													"check_id",
													"category",
													"severity",
													"message_source",
													"title",
													"why_it_matters",
													"current_state"
												]
											},
											"maxItems": 75
										},
										"risk_decisions": {
											"type": "array",
											"items": {
												"type": "object",
												"properties": {
													"id": {
														"$ref": "#/components/schemas/idResponse"
													},
													"check_id": {
														"type": "string"
													},
													"declared_scope": {
														"type": "string",
														"enum": ["organization", "workspace"],
														"description": "One of: `organization`, `workspace`"
													},
													"status": {
														"type": "string",
														"enum": [
															"pending",
															"accepted",
															"rejected",
															"reactivated"
														],
														"description": "One of: `pending`, `accepted`, `rejected`, `reactivated`"
													},
													"effect": {
														"type": "string",
														"enum": ["accepted_risk", "open", "pending_review"],
														"description": "One of: `accepted_risk`, `open`, `pending_review`"
													},
													"requested_at": {
														"type": "string",
														"format": "date-time"
													},
													"decided_at": {
														"oneOf": [
															{
																"type": "string",
																"format": "date-time"
															},
															{
																"type": "null"
															}
														]
													},
													"expires_at": {
														"oneOf": [
															{
																"type": "string",
																"format": "date-time"
															},
															{
																"type": "null"
															}
														]
													}
												},
												"additionalProperties": false,
												"required": [
													"id",
													"check_id",
													"declared_scope",
													"status",
													"effect",
													"requested_at",
													"decided_at",
													"expires_at"
												]
											},
											"maxItems": 150
										},
										"history": {
											"type": "array",
											"items": {
												"type": "object",
												"properties": {
													"captured_at": {
														"type": "string",
														"format": "date-time"
													},
													"scoring_version": {
														"type": "integer",
														"minimum": 0
													},
													"policy_revision": {
														"type": "integer",
														"minimum": 0
													},
													"custom_check_revision": {
														"type": "integer",
														"minimum": 0
													},
													"score": {
														"type": "integer",
														"minimum": 0,
														"maximum": 100
													}
												},
												"additionalProperties": false,
												"required": [
													"captured_at",
													"scoring_version",
													"policy_revision",
													"custom_check_revision",
													"score"
												]
											},
											"maxItems": 90
										}
									},
									"additionalProperties": false,
									"required": [
										"object",
										"workspace_id",
										"captured_at",
										"scoring_version",
										"policy_revision",
										"custom_check_revision",
										"score",
										"categories",
										"recommendations",
										"risk_decisions",
										"history"
									]
								}
							}
						}
					},
					"400": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_400"
								}
							}
						}
					},
					"401": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_401"
								}
							}
						}
					},
					"403": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_403"
								}
							}
						}
					},
					"404": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_404"
								}
							}
						}
					},
					"406": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_406"
								}
							}
						}
					},
					"409": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_409"
								}
							}
						}
					},
					"429": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_429"
								}
							}
						}
					},
					"500": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_500"
								}
							}
						}
					},
					"503": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_503"
								}
							}
						}
					},
					"504": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_504"
								}
							}
						}
					},
					"529": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_529"
								}
							}
						}
					}
				}
			}
		},
		"/v1/teamspaces/{team_id}": {
			"get": {
				"summary": "Get teamspace",
				"operationId": "get-teamspace",
				"tags": ["Internal"],
				"x-hidden": true,
				"x-noIndex": true,
				"parameters": [
					{
						"name": "team_id",
						"in": "path",
						"required": true,
						"schema": {
							"$ref": "#/components/schemas/idRequest",
							"description": "The ID of the teamspace to retrieve."
						}
					},
					{
						"$ref": "#/components/parameters/notionVersion"
					}
				],
				"responses": {
					"200": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"object": {
											"type": "string",
											"const": "teamspace",
											"description": "The team object type name."
										},
										"id": {
											"$ref": "#/components/schemas/idResponse",
											"description": "The ID of the teamspace."
										},
										"name": {
											"type": "string",
											"description": "The name of the teamspace."
										},
										"description": {
											"oneOf": [
												{
													"type": "string"
												},
												{
													"type": "null"
												}
											],
											"description": "The description of the teamspace."
										},
										"icon": {
											"oneOf": [
												{
													"$ref": "#/components/schemas/pageIconResponse"
												},
												{
													"type": "null"
												}
											],
											"description": "The icon of the teamspace."
										},
										"in_trash": {
											"type": "boolean",
											"description": "Whether the teamspace is in the trash."
										},
										"visibility": {
											"type": "string",
											"enum": ["default", "open", "closed", "private"],
											"description": "The teamspace's visibility in the workspace."
										},
										"settings": {
											"oneOf": [
												{
													"type": "object",
													"properties": {
														"allow_members_to_invite_members": {
															"type": "boolean",
															"description": "Whether members can invite other members."
														},
														"allow_members_to_change_sidebar": {
															"type": "boolean",
															"description": "Whether members can change the sidebar."
														},
														"disable_invite_link": {
															"type": "boolean",
															"description": "Whether invite links are allowed."
														},
														"disable_public_pages": {
															"type": "boolean",
															"description": "Whether public pages are allowed."
														},
														"disable_guests": {
															"type": "boolean",
															"description": "Whether guests are allowed."
														},
														"disable_restricted_members": {
															"type": "boolean",
															"description": "Whether restricted members are allowed."
														},
														"disable_export": {
															"type": "boolean",
															"description": "Whether export is allowed."
														}
													},
													"additionalProperties": false,
													"required": [
														"allow_members_to_invite_members",
														"allow_members_to_change_sidebar",
														"disable_invite_link",
														"disable_public_pages",
														"disable_guests",
														"disable_restricted_members",
														"disable_export"
													]
												},
												{
													"type": "null"
												}
											],
											"description": "The teamspace's settings."
										}
									},
									"additionalProperties": false,
									"required": [
										"object",
										"id",
										"name",
										"description",
										"icon",
										"in_trash",
										"visibility",
										"settings"
									]
								}
							}
						}
					},
					"400": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_400"
								}
							}
						}
					},
					"401": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_401"
								}
							}
						}
					},
					"403": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_403"
								}
							}
						}
					},
					"404": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_404"
								}
							}
						}
					},
					"406": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_406"
								}
							}
						}
					},
					"409": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_409"
								}
							}
						}
					},
					"429": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_429"
								}
							}
						}
					},
					"500": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_500"
								}
							}
						}
					},
					"503": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_503"
								}
							}
						}
					},
					"504": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_504"
								}
							}
						}
					},
					"529": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_529"
								}
							}
						}
					}
				}
			},
			"patch": {
				"summary": "Update teamspace",
				"operationId": "update-teamspace",
				"tags": ["Internal"],
				"x-hidden": true,
				"x-noIndex": true,
				"parameters": [
					{
						"name": "team_id",
						"in": "path",
						"required": true,
						"schema": {
							"$ref": "#/components/schemas/idRequest",
							"description": "The ID of the teamspace to update."
						}
					},
					{
						"$ref": "#/components/parameters/notionVersion"
					}
				],
				"requestBody": {
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"type": "object",
								"properties": {
									"name": {
										"type": "string",
										"examples": ["Engineering Team"],
										"description": "The name of the teamspace."
									},
									"visibility": {
										"type": "string",
										"enum": ["default", "open", "closed", "private"],
										"description": "The teamspace's visibility in the workspace. Options include: default, open, closed, private."
									},
									"description": {
										"type": "string",
										"examples": ["Team for engineering projects"],
										"description": "The description for the teamspace."
									},
									"icon": {
										"$ref": "#/components/schemas/pageIconRequest",
										"description": "The icon for the teamspace."
									},
									"settings": {
										"type": "object",
										"properties": {
											"allow_members_to_invite_members": {
												"type": "boolean",
												"description": "When true, members can invite other members. When false, only teamspace owners can. Corresponds to the 'Who can invite or remove teamspace members` setting."
											},
											"allow_members_to_change_sidebar": {
												"type": "boolean",
												"description": "When true, members can edit the sidebar. When false, only teamspace owners can. Corresponds to the `Who can edit teamspace sidebar` setting."
											},
											"disable_invite_link": {
												"type": "boolean",
												"description": "When true, invite links are disabled. Corresponds to the `Invite Link` toggle."
											},
											"disable_public_pages": {
												"type": "boolean",
												"description": "When true, public pages are disabled. Corresponds to the `Disable publishing sites, forms, and public links` toggle."
											},
											"disable_guests": {
												"type": "boolean",
												"description": "When true, guests are disabled and removed from the teamspace. Corresponds to the `Disable guests` toggle."
											},
											"disable_restricted_members": {
												"type": "boolean",
												"description": "When true, restricted members are disabled and removed from the teamspace. Corresponds to the `Disable restricted members` toggle."
											},
											"disable_export": {
												"type": "boolean",
												"description": "When true, exporting pages is disabled. Corresponds to the `Disable export` toggle."
											}
										},
										"description": "The settings of the teamspace."
									}
								}
							}
						}
					}
				},
				"responses": {
					"200": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"object": {
											"type": "string",
											"const": "teamspace",
											"description": "The team object type name."
										},
										"id": {
											"$ref": "#/components/schemas/idResponse",
											"description": "The ID of the teamspace."
										},
										"name": {
											"type": "string",
											"description": "The name of the teamspace."
										},
										"description": {
											"oneOf": [
												{
													"type": "string"
												},
												{
													"type": "null"
												}
											],
											"description": "The description of the teamspace."
										},
										"icon": {
											"oneOf": [
												{
													"$ref": "#/components/schemas/pageIconResponse"
												},
												{
													"type": "null"
												}
											],
											"description": "The icon of the teamspace."
										},
										"in_trash": {
											"type": "boolean",
											"description": "Whether the teamspace is in the trash."
										},
										"visibility": {
											"type": "string",
											"enum": ["default", "open", "closed", "private"],
											"description": "The teamspace's visibility in the workspace."
										},
										"settings": {
											"oneOf": [
												{
													"type": "object",
													"properties": {
														"allow_members_to_invite_members": {
															"type": "boolean",
															"description": "Whether members can invite other members."
														},
														"allow_members_to_change_sidebar": {
															"type": "boolean",
															"description": "Whether members can change the sidebar."
														},
														"disable_invite_link": {
															"type": "boolean",
															"description": "Whether invite links are allowed."
														},
														"disable_public_pages": {
															"type": "boolean",
															"description": "Whether public pages are allowed."
														},
														"disable_guests": {
															"type": "boolean",
															"description": "Whether guests are allowed."
														},
														"disable_restricted_members": {
															"type": "boolean",
															"description": "Whether restricted members are allowed."
														},
														"disable_export": {
															"type": "boolean",
															"description": "Whether export is allowed."
														}
													},
													"additionalProperties": false,
													"required": [
														"allow_members_to_invite_members",
														"allow_members_to_change_sidebar",
														"disable_invite_link",
														"disable_public_pages",
														"disable_guests",
														"disable_restricted_members",
														"disable_export"
													]
												},
												{
													"type": "null"
												}
											],
											"description": "The teamspace's settings."
										}
									},
									"additionalProperties": false,
									"required": [
										"object",
										"id",
										"name",
										"description",
										"icon",
										"in_trash",
										"visibility",
										"settings"
									]
								}
							}
						}
					},
					"400": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_400"
								}
							}
						}
					},
					"401": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_401"
								}
							}
						}
					},
					"403": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_403"
								}
							}
						}
					},
					"404": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_404"
								}
							}
						}
					},
					"406": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_406"
								}
							}
						}
					},
					"409": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_409"
								}
							}
						}
					},
					"429": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_429"
								}
							}
						}
					},
					"500": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_500"
								}
							}
						}
					},
					"503": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_503"
								}
							}
						}
					},
					"504": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_504"
								}
							}
						}
					},
					"529": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_529"
								}
							}
						}
					}
				}
			}
		},
		"/v1/export": {
			"post": {
				"summary": "Export a page",
				"operationId": "initiate-page-export",
				"tags": ["Internal"],
				"x-hidden": true,
				"x-noIndex": true,
				"parameters": [
					{
						"$ref": "#/components/parameters/notionVersion"
					}
				],
				"requestBody": {
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"type": "object",
								"properties": {
									"blockId": {
										"$ref": "#/components/schemas/idRequest",
										"description": "The ID of the page or block to export."
									}
								},
								"required": ["blockId"]
							}
						}
					}
				},
				"responses": {
					"200": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"object": {
											"type": "string",
											"const": "export",
											"description": "The type of object, always 'export'."
										},
										"id": {
											"$ref": "#/components/schemas/idResponse",
											"description": "The ID of the exported page or block."
										},
										"pdf_export_url": {
											"type": "string",
											"description": "URL to download the page export (PDF)."
										},
										"metadata_export_url": {
											"type": "string",
											"description": "URL to download the metadata export (JSON)."
										},
										"comments_export_url": {
											"type": "string",
											"description": "URL to download the comments export (JSON)."
										},
										"attachments_export_url": {
											"type": "string",
											"description": "URL to download the attachments export (JSON)."
										},
										"permissions_export_url": {
											"type": "string",
											"description": "URL to download the permissions export (JSON)."
										}
									},
									"additionalProperties": false,
									"required": [
										"object",
										"id",
										"pdf_export_url",
										"metadata_export_url",
										"comments_export_url",
										"attachments_export_url",
										"permissions_export_url"
									]
								}
							}
						}
					},
					"400": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_400"
								}
							}
						}
					},
					"401": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_401"
								}
							}
						}
					},
					"403": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_403"
								}
							}
						}
					},
					"404": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_404"
								}
							}
						}
					},
					"406": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_406"
								}
							}
						}
					},
					"409": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_409"
								}
							}
						}
					},
					"429": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_429"
								}
							}
						}
					},
					"500": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_500"
								}
							}
						}
					},
					"503": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_503"
								}
							}
						}
					},
					"504": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_504"
								}
							}
						}
					},
					"529": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_529"
								}
							}
						}
					}
				}
			}
		},
		"/v1/agents": {
			"get": {
				"summary": "List agents",
				"operationId": "list-agents",
				"tags": ["Internal"],
				"x-hidden": true,
				"x-noIndex": true,
				"parameters": [
					{
						"name": "name",
						"in": "query",
						"schema": {
							"type": "string",
							"description": "Filter agents by name (case-insensitive substring match)."
						}
					},
					{
						"name": "agent_type",
						"in": "query",
						"schema": {
							"type": "array",
							"items": {
								"type": "string",
								"enum": [
									"notion_ai",
									"custom_agent",
									"autofill_custom_agent",
									"external"
								],
								"description": "One of: `notion_ai`, `custom_agent`, `autofill_custom_agent`, `external`"
							},
							"maxItems": 100,
							"minItems": 1,
							"description": "Filter agents by one or more agent types."
						}
					},
					{
						"name": "agent_ids",
						"in": "query",
						"schema": {
							"type": "array",
							"items": {
								"oneOf": [
									{
										"$ref": "#/components/schemas/idRequest"
									},
									{
										"type": "string",
										"enum": [
											"notion_ai",
											"33333333-3333-3333-3333-333333333333"
										],
										"description": "One of: `notion_ai`, `33333333-3333-3333-3333-333333333333`"
									}
								]
							},
							"maxItems": 100,
							"minItems": 1,
							"description": "Filter agents by one or more agent IDs. Use `notion_ai` for Notion Agent (personal agent)."
						}
					},
					{
						"name": "created_by",
						"in": "query",
						"schema": {
							"type": "array",
							"items": {
								"oneOf": [
									{
										"$ref": "#/components/schemas/idRequest"
									},
									{
										"type": "string",
										"const": "me",
										"description": "Always `me`"
									}
								]
							},
							"maxItems": 100,
							"minItems": 1,
							"description": "Filter agents by one or more creator IDs. Use \"me\" for the user associated with the API token."
						}
					},
					{
						"name": "start_cursor",
						"in": "query",
						"schema": {
							"type": "string",
							"description": "If supplied, this endpoint will return a page of results starting after the cursor provided. If not supplied, this endpoint will return the first page of results."
						}
					},
					{
						"name": "page_size",
						"in": "query",
						"schema": {
							"type": "integer",
							"minimum": 1,
							"maximum": 100,
							"description": "The number of items from the full list desired in the response. Maximum: 100"
						}
					},
					{
						"name": "verbose",
						"in": "query",
						"schema": {
							"type": "boolean",
							"description": "Whether to include inline instructions for each agent. Defaults to false."
						}
					},
					{
						"$ref": "#/components/parameters/notionVersion"
					}
				],
				"responses": {
					"200": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"object": {
											"type": "string",
											"const": "list",
											"description": "Always `list`"
										},
										"type": {
											"type": "string",
											"const": "agent",
											"description": "Always `agent`"
										},
										"results": {
											"type": "array",
											"items": {
												"type": "object",
												"properties": {
													"object": {
														"type": "string",
														"const": "agent",
														"description": "Always `agent`"
													},
													"id": {
														"anyOf": [
															{
																"$ref": "#/components/schemas/idResponse"
															},
															{
																"type": "string",
																"const": "notion_ai",
																"description": "Always `notion_ai`"
															}
														]
													},
													"agent_type": {
														"type": "string",
														"enum": [
															"notion_ai",
															"custom_agent",
															"autofill_custom_agent",
															"external"
														],
														"description": "Agent kind: the Notion AI personal agent, a custom agent, a database autofill custom agent, or an external agent."
													},
													"name": {
														"type": "string"
													},
													"description": {
														"oneOf": [
															{
																"type": "string"
															},
															{
																"type": "null"
															}
														]
													},
													"instructions_page_id": {
														"oneOf": [
															{
																"$ref": "#/components/schemas/idResponse"
															},
															{
																"type": "null"
															}
														]
													},
													"icon": {
														"oneOf": [
															{
																"$ref": "#/components/schemas/pageIconResponse"
															},
															{
																"type": "object",
																"properties": {
																	"type": {
																		"type": "string",
																		"const": "custom_agent_avatar",
																		"description": "Type of icon. In this case, a custom agent avatar."
																	},
																	"custom_agent_avatar": {
																		"type": "object",
																		"properties": {
																			"static_url": {
																				"type": "string",
																				"description": "The URL of the static custom agent avatar."
																			},
																			"animated_url": {
																				"type": "string",
																				"description": "The URL of the animated custom agent avatar."
																			}
																		},
																		"additionalProperties": false,
																		"required": ["static_url", "animated_url"],
																		"description": "The static and animated URLs for the agent avatar."
																	}
																},
																"additionalProperties": false,
																"required": ["type", "custom_agent_avatar"]
															},
															{
																"type": "null"
															}
														]
													},
													"version": {
														"oneOf": [
															{
																"type": "object",
																"properties": {
																	"id": {
																		"$ref": "#/components/schemas/idResponse",
																		"description": "The ID of the published artifact."
																	},
																	"number": {
																		"type": "number",
																		"description": "The version number."
																	},
																	"published_at": {
																		"type": "string",
																		"description": "The ISO 8601 timestamp when this version was published."
																	}
																},
																"additionalProperties": false,
																"required": ["id", "number", "published_at"]
															},
															{
																"type": "null"
															}
														]
													},
													"agent_version": {
														"oneOf": [
															{
																"type": "object",
																"properties": {
																	"id": {
																		"$ref": "#/components/schemas/idResponse",
																		"description": "The ID of the published artifact."
																	},
																	"number": {
																		"type": "number",
																		"description": "The version number."
																	},
																	"published_at": {
																		"type": "string",
																		"description": "The ISO 8601 timestamp when this version was published."
																	}
																},
																"additionalProperties": false,
																"required": ["id", "number", "published_at"]
															},
															{
																"type": "null"
															}
														]
													},
													"model": {
														"oneOf": [
															{
																"type": "object",
																"properties": {
																	"mode": {
																		"type": "string",
																		"const": "auto",
																		"description": "Always `auto`"
																	}
																},
																"additionalProperties": false,
																"required": ["mode"]
															},
															{
																"type": "object",
																"properties": {
																	"mode": {
																		"type": "string",
																		"const": "pinned",
																		"description": "Always `pinned`"
																	},
																	"id": {
																		"oneOf": [
																			{
																				"type": "string"
																			},
																			{
																				"type": "null"
																			}
																		],
																		"description": "The public model this agent maps to (e.g. \"claude-sonnet-5\"), or null for a pre-release / early-access model."
																	}
																},
																"additionalProperties": false,
																"required": ["mode", "id"]
															}
														],
														"description": "The model the agent runs on: auto (Notion selects) or a pinned model."
													},
													"connections": {
														"type": "array",
														"items": {
															"oneOf": [
																{
																	"type": "object",
																	"properties": {
																		"type": {
																			"type": "string",
																			"const": "notion",
																			"description": "Always `notion`"
																		},
																		"name": {
																			"type": "string"
																		},
																		"account": {
																			"type": "null"
																		},
																		"permissions": {
																			"type": "array",
																			"items": {
																				"type": "object",
																				"properties": {
																					"target": {
																						"oneOf": [
																							{
																								"type": "object",
																								"properties": {
																									"type": {
																										"type": "string",
																										"const": "page",
																										"description": "Always `page`"
																									},
																									"id": {
																										"type": "string"
																									}
																								},
																								"additionalProperties": false,
																								"required": ["type", "id"]
																							},
																							{
																								"type": "object",
																								"properties": {
																									"type": {
																										"type": "string",
																										"const": "database_property",
																										"description": "Always `database_property`"
																									},
																									"data_source_id": {
																										"type": "string"
																									},
																									"property_id": {
																										"type": "string"
																									}
																								},
																								"additionalProperties": false,
																								"required": [
																									"type",
																									"data_source_id",
																									"property_id"
																								]
																							},
																							{
																								"type": "object",
																								"properties": {
																									"type": {
																										"type": "string",
																										"const": "agent",
																										"description": "Always `agent`"
																									},
																									"id": {
																										"type": "string"
																									}
																								},
																								"additionalProperties": false,
																								"required": ["type", "id"]
																							},
																							{
																								"type": "object",
																								"properties": {
																									"type": {
																										"type": "string",
																										"const": "workspace",
																										"description": "Always `workspace`"
																									}
																								},
																								"additionalProperties": false,
																								"required": ["type"]
																							},
																							{
																								"type": "object",
																								"properties": {
																									"type": {
																										"type": "string",
																										"const": "owner_private_pages",
																										"description": "Always `owner_private_pages`"
																									}
																								},
																								"additionalProperties": false,
																								"required": ["type"]
																							},
																							{
																								"type": "object",
																								"properties": {
																									"type": {
																										"type": "string",
																										"const": "web_search",
																										"description": "Always `web_search`"
																									},
																									"allowed_domains": {
																										"oneOf": [
																											{
																												"type": "array",
																												"items": {
																													"type": "string"
																												},
																												"maxItems": 100
																											},
																											{
																												"type": "null"
																											}
																										],
																										"description": "Domains web search is restricted to, or null when unrestricted."
																									}
																								},
																								"additionalProperties": false,
																								"required": [
																									"type",
																									"allowed_domains"
																								]
																							},
																							{
																								"type": "object",
																								"properties": {
																									"type": {
																										"type": "string",
																										"const": "notion_help_docs_search",
																										"description": "Always `notion_help_docs_search`"
																									}
																								},
																								"additionalProperties": false,
																								"required": ["type"]
																							}
																						]
																					},
																					"scopes": {
																						"type": "array",
																						"items": {
																							"type": "string"
																						},
																						"maxItems": 100,
																						"description": "Content roles (\"reader\" | \"comment_only\" | \"read_and_write\" | \"editor\") for scoped targets, or search verbs (\"allow\" | \"disallow\") for the search targets."
																					}
																				},
																				"additionalProperties": false,
																				"required": ["target", "scopes"]
																			},
																			"maxItems": 100
																		}
																	},
																	"additionalProperties": false,
																	"required": [
																		"type",
																		"name",
																		"account",
																		"permissions"
																	]
																},
																{
																	"type": "object",
																	"properties": {
																		"type": {
																			"type": "string",
																			"const": "slack",
																			"description": "Always `slack`"
																		},
																		"name": {
																			"type": "string"
																		},
																		"account": {
																			"oneOf": [
																				{
																					"type": "object",
																					"properties": {
																						"type": {
																							"type": "string",
																							"const": "slack_workspace",
																							"description": "Always `slack_workspace`"
																						},
																						"team_id": {
																							"type": "string"
																						}
																					},
																					"additionalProperties": false,
																					"required": ["type", "team_id"]
																				},
																				{
																					"type": "string",
																					"const": "hidden",
																					"description": "Always `hidden`"
																				},
																				{
																					"type": "null"
																				}
																			],
																			"description": "The linked Slack workspace, null when none is linked, or \"hidden\" when the caller lacks edit access to the agent."
																		},
																		"permissions": {
																			"type": "array",
																			"items": {
																				"type": "object",
																				"properties": {
																					"target": {
																						"oneOf": [
																							{
																								"type": "object",
																								"properties": {
																									"type": {
																										"type": "string",
																										"const": "slack_channel",
																										"description": "Always `slack_channel`"
																									},
																									"id": {
																										"type": "string"
																									}
																								},
																								"additionalProperties": false,
																								"required": ["type", "id"]
																							},
																							{
																								"type": "object",
																								"properties": {
																									"type": {
																										"type": "string",
																										"const": "slack_all_public_channels",
																										"description": "Always `slack_all_public_channels`"
																									}
																								},
																								"additionalProperties": false,
																								"required": ["type"]
																							},
																							{
																								"type": "object",
																								"properties": {
																									"type": {
																										"type": "string",
																										"const": "slack_all_channels",
																										"description": "Always `slack_all_channels`"
																									}
																								},
																								"additionalProperties": false,
																								"required": ["type"]
																							}
																						]
																					},
																					"scopes": {
																						"type": "array",
																						"items": {
																							"type": "string"
																						},
																						"maxItems": 100,
																						"description": "Slack verbs granted on this target (\"read\" | \"write\" | \"reply_in_thread\" | \"react\")."
																					}
																				},
																				"additionalProperties": false,
																				"required": ["target", "scopes"]
																			},
																			"maxItems": 100
																		}
																	},
																	"additionalProperties": false,
																	"required": [
																		"type",
																		"name",
																		"account",
																		"permissions"
																	]
																},
																{
																	"type": "object",
																	"properties": {
																		"type": {
																			"type": "string",
																			"const": "discord",
																			"description": "Always `discord`"
																		},
																		"name": {
																			"type": "string"
																		},
																		"account": {
																			"oneOf": [
																				{
																					"type": "object",
																					"properties": {
																						"type": {
																							"type": "string",
																							"const": "discord_server",
																							"description": "Always `discord_server`"
																						},
																						"id": {
																							"type": "string"
																						}
																					},
																					"additionalProperties": false,
																					"required": ["type", "id"]
																				},
																				{
																					"type": "string",
																					"const": "hidden",
																					"description": "Always `hidden`"
																				},
																				{
																					"type": "null"
																				}
																			],
																			"description": "The linked Discord server, null when none is linked, or \"hidden\" when the caller lacks edit access to the agent."
																		},
																		"permissions": {
																			"type": "array",
																			"items": {
																				"type": "object",
																				"properties": {
																					"target": {
																						"oneOf": [
																							{
																								"type": "object",
																								"properties": {
																									"type": {
																										"type": "string",
																										"const": "discord_channel",
																										"description": "Always `discord_channel`"
																									},
																									"id": {
																										"type": "string"
																									}
																								},
																								"additionalProperties": false,
																								"required": ["type", "id"]
																							},
																							{
																								"type": "object",
																								"properties": {
																									"type": {
																										"type": "string",
																										"const": "discord_all_channels",
																										"description": "Always `discord_all_channels`"
																									}
																								},
																								"additionalProperties": false,
																								"required": ["type"]
																							}
																						]
																					},
																					"scopes": {
																						"type": "array",
																						"items": {
																							"type": "string"
																						},
																						"maxItems": 100,
																						"description": "Discord verbs granted on this target (\"read\" | \"write\" | \"reply_in_thread\" | \"react\")."
																					}
																				},
																				"additionalProperties": false,
																				"required": ["target", "scopes"]
																			},
																			"maxItems": 100
																		}
																	},
																	"additionalProperties": false,
																	"required": [
																		"type",
																		"name",
																		"account",
																		"permissions"
																	]
																},
																{
																	"type": "object",
																	"properties": {
																		"type": {
																			"type": "string",
																			"const": "mcp_server",
																			"description": "Always `mcp_server`"
																		},
																		"name": {
																			"type": "string"
																		},
																		"account": {
																			"oneOf": [
																				{
																					"type": "object",
																					"properties": {
																						"type": {
																							"type": "string",
																							"const": "mcp_server",
																							"description": "Always `mcp_server`"
																						},
																						"server_host": {
																							"type": "string",
																							"description": "The MCP server host (never the full URL, which can carry credentials or private path components)."
																						}
																					},
																					"additionalProperties": false,
																					"required": ["type", "server_host"]
																				},
																				{
																					"type": "string",
																					"const": "hidden",
																					"description": "Always `hidden`"
																				},
																				{
																					"type": "null"
																				}
																			],
																			"description": "The MCP server host, null when none is linked, or \"hidden\" when the caller lacks edit access to the agent."
																		},
																		"enabled_tools": {
																			"oneOf": [
																				{
																					"type": "array",
																					"items": {
																						"type": "object",
																						"properties": {
																							"name": {
																								"type": "string"
																							},
																							"title": {
																								"oneOf": [
																									{
																										"type": "string"
																									},
																									{
																										"type": "null"
																									}
																								]
																							}
																						},
																						"additionalProperties": false,
																						"required": ["name", "title"]
																					},
																					"maxItems": 100
																				},
																				{
																					"type": "string",
																					"const": "hidden",
																					"description": "Always `hidden`"
																				},
																				{
																					"type": "null"
																				}
																			],
																			"description": "The tools the agent may call, null when all tools are enabled (including any the server adds later), or \"hidden\" when the caller lacks edit access to the agent."
																		},
																		"run_tools_automatically": {
																			"type": "object",
																			"properties": {
																				"read": {
																					"type": "boolean",
																					"description": "Whether read tool calls run without a confirmation step."
																				},
																				"write": {
																					"type": "boolean",
																					"description": "Whether write tool calls run without a confirmation step."
																				}
																			},
																			"additionalProperties": false,
																			"required": ["read", "write"],
																			"description": "Whether read / write tool calls run without a confirmation step."
																		}
																	},
																	"additionalProperties": false,
																	"required": [
																		"type",
																		"name",
																		"account",
																		"enabled_tools",
																		"run_tools_automatically"
																	]
																},
																{
																	"type": "object",
																	"properties": {
																		"type": {
																			"type": "string",
																			"const": "custom_mcp_server",
																			"description": "Always `custom_mcp_server`"
																		},
																		"name": {
																			"type": "string"
																		},
																		"account": {
																			"oneOf": [
																				{
																					"type": "object",
																					"properties": {
																						"type": {
																							"type": "string",
																							"const": "mcp_server",
																							"description": "Always `mcp_server`"
																						},
																						"server_host": {
																							"type": "string",
																							"description": "The MCP server host (never the full URL, which can carry credentials or private path components)."
																						}
																					},
																					"additionalProperties": false,
																					"required": ["type", "server_host"]
																				},
																				{
																					"type": "string",
																					"const": "hidden",
																					"description": "Always `hidden`"
																				},
																				{
																					"type": "null"
																				}
																			],
																			"description": "The MCP server host, null when none is linked, or \"hidden\" when the caller lacks edit access to the agent."
																		},
																		"enabled_tools": {
																			"oneOf": [
																				{
																					"type": "array",
																					"items": {
																						"type": "object",
																						"properties": {
																							"name": {
																								"type": "string"
																							},
																							"title": {
																								"oneOf": [
																									{
																										"type": "string"
																									},
																									{
																										"type": "null"
																									}
																								]
																							}
																						},
																						"additionalProperties": false,
																						"required": ["name", "title"]
																					},
																					"maxItems": 100
																				},
																				{
																					"type": "string",
																					"const": "hidden",
																					"description": "Always `hidden`"
																				},
																				{
																					"type": "null"
																				}
																			],
																			"description": "The tools the agent may call, null when all tools are enabled (including any the server adds later), or \"hidden\" when the caller lacks edit access to the agent."
																		},
																		"run_tools_automatically": {
																			"type": "object",
																			"properties": {
																				"read": {
																					"type": "boolean",
																					"description": "Whether read tool calls run without a confirmation step."
																				},
																				"write": {
																					"type": "boolean",
																					"description": "Whether write tool calls run without a confirmation step."
																				}
																			},
																			"additionalProperties": false,
																			"required": ["read", "write"],
																			"description": "Whether read / write tool calls run without a confirmation step."
																		}
																	},
																	"additionalProperties": false,
																	"required": [
																		"type",
																		"name",
																		"account",
																		"enabled_tools",
																		"run_tools_automatically"
																	]
																},
																{
																	"type": "object",
																	"properties": {
																		"type": {
																			"type": "string",
																			"enum": [
																				"asana",
																				"box",
																				"calendar",
																				"computer",
																				"confluence",
																				"cursor",
																				"feedback",
																				"files",
																				"fs",
																				"github",
																				"gmail",
																				"google_calendar",
																				"google_drive",
																				"google_drive_oauth",
																				"gtm",
																				"helpdocs",
																				"images",
																				"jira",
																				"linear",
																				"mail",
																				"marketplace",
																				"memory",
																				"microsoft_teams",
																				"microsoft_teams_oauth",
																				"outlook",
																				"salesforce",
																				"search",
																				"security",
																				"sharepoint",
																				"sharepoint_oauth",
																				"shopify",
																				"skills",
																				"system",
																				"test",
																				"web",
																				"webhooks",
																				"worker",
																				"workers"
																			],
																			"description": "The connector's machine name (e.g. \"github\", \"google_drive\")."
																		},
																		"name": {
																			"type": "string"
																		},
																		"account": {
																			"oneOf": [
																				{
																					"type": "string"
																				},
																				{
																					"type": "null"
																				}
																			],
																			"description": "The provider-side account identifier, null when none is linked, or \"hidden\" when the caller lacks edit access to the agent."
																		},
																		"permissions": {
																			"type": "array",
																			"items": {
																				"type": "object",
																				"properties": {
																					"target": {
																						"type": "object",
																						"properties": {
																							"type": {
																								"type": "string"
																							},
																							"id": {
																								"type": "string"
																							}
																						},
																						"additionalProperties": false,
																						"required": ["type", "id"]
																					},
																					"scopes": {
																						"type": "array",
																						"items": {
																							"type": "string"
																						},
																						"maxItems": 100,
																						"description": "The scopes granted on this target."
																					}
																				},
																				"additionalProperties": false,
																				"required": ["target", "scopes"]
																			},
																			"maxItems": 100
																		}
																	},
																	"additionalProperties": false,
																	"required": [
																		"type",
																		"name",
																		"account",
																		"permissions"
																	]
																}
															]
														},
														"maxItems": 100,
														"description": "Non-Notion integrations the agent is connected to, using the same account and permission shape as get agent."
													},
													"status": {
														"type": "string",
														"enum": ["active", "disabled", "deleted"],
														"description": "Agent status. Disabled agents remain listed; deleted agents are currently excluded from list responses."
													},
													"created_by": {
														"oneOf": [
															{
																"type": "object",
																"properties": {
																	"object": {
																		"type": "string",
																		"const": "user",
																		"description": "Always `user`"
																	},
																	"type": {
																		"type": "string",
																		"const": "user",
																		"description": "Always `user`"
																	},
																	"id": {
																		"$ref": "#/components/schemas/idResponse",
																		"description": "The ID of the user that created this agent."
																	}
																},
																"additionalProperties": false,
																"required": ["object", "type", "id"]
															},
															{
																"type": "null"
															}
														]
													},
													"created_time": {
														"oneOf": [
															{
																"type": "string",
																"format": "date-time"
															},
															{
																"type": "null"
															}
														],
														"description": "Date and time when this agent was created, or null for the personal agent."
													},
													"last_edited_time": {
														"oneOf": [
															{
																"type": "string",
																"format": "date-time"
															},
															{
																"type": "null"
															}
														],
														"description": "Date and time when this agent was last edited, or null for the personal agent."
													},
													"last_run_time": {
														"oneOf": [
															{
																"type": "string",
																"format": "date-time",
																"pattern": "^\\d{4}-\\d{2}-\\d{2}T"
															},
															{
																"type": "string",
																"const": "hidden",
																"description": "Always `hidden`"
															},
															{
																"type": "null"
															}
														],
														"description": "Date and time when this agent was last invoked, null when no invocation is available, or \"hidden\" when the caller lacks edit access to the agent."
													},
													"last_run_at": {
														"oneOf": [
															{
																"type": "string",
																"format": "date-time",
																"pattern": "^\\d{4}-\\d{2}-\\d{2}T"
															},
															{
																"type": "string",
																"const": "hidden",
																"description": "Always `hidden`"
															},
															{
																"type": "null"
															}
														],
														"description": "Date and time when this agent was last invoked, null when no invocation is available, or \"hidden\" when the caller lacks edit access to the agent."
													},
													"instructions": {
														"oneOf": [
															{
																"type": "string"
															},
															{
																"type": "null"
															}
														],
														"description": "The agent's inline instructions when verbose=true, or null when its instructions are stored on a page."
													}
												},
												"additionalProperties": false,
												"required": [
													"object",
													"id",
													"agent_type",
													"name",
													"description",
													"instructions_page_id",
													"icon",
													"version",
													"agent_version",
													"model",
													"connections",
													"status",
													"created_by",
													"created_time",
													"last_edited_time",
													"last_run_time",
													"last_run_at"
												]
											},
											"maxItems": 100
										},
										"has_more": {
											"type": "boolean"
										},
										"next_cursor": {
											"oneOf": [
												{
													"title": "Cursor",
													"type": "string"
												},
												{
													"type": "null"
												}
											]
										}
									},
									"additionalProperties": false,
									"required": [
										"object",
										"type",
										"results",
										"has_more",
										"next_cursor"
									]
								}
							}
						}
					},
					"400": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_400"
								}
							}
						}
					},
					"401": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_401"
								}
							}
						}
					},
					"403": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_403"
								}
							}
						}
					},
					"404": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_404"
								}
							}
						}
					},
					"406": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_406"
								}
							}
						}
					},
					"409": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_409"
								}
							}
						}
					},
					"429": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_429"
								}
							}
						}
					},
					"500": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_500"
								}
							}
						}
					},
					"503": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_503"
								}
							}
						}
					},
					"504": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_504"
								}
							}
						}
					},
					"529": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_529"
								}
							}
						}
					}
				},
				"deprecated": true,
				"x-notion-docs-ref": "https://developers.notion.com/reference/internal/list-agents"
			}
		},
		"/v1/connections": {
			"get": {
				"summary": "List connections",
				"operationId": "list-connections",
				"tags": ["Internal"],
				"x-hidden": true,
				"x-noIndex": true,
				"parameters": [
					{
						"name": "include_types",
						"in": "query",
						"schema": {
							"type": "boolean",
							"description": "Whether to include actor-specific TypeScript declarations for notion-script."
						}
					},
					{
						"$ref": "#/components/parameters/notionVersion"
					}
				],
				"responses": {
					"200": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"object": {
											"type": "string",
											"const": "connection_list",
											"description": "Always connection_list."
										},
										"connections": {
											"type": "array",
											"items": {
												"type": "object",
												"properties": {
													"id": {
														"type": "string",
														"description": "Stable ID of the configured connection."
													},
													"key": {
														"type": "string",
														"description": "Generated convenience key accepted by connection selectors. Use the stable ID when a key matches multiple connections."
													},
													"name": {
														"type": "string",
														"description": "User-visible connection name."
													},
													"type": {
														"type": "string",
														"description": "Connection provider type, such as slack."
													},
													"is_default": {
														"type": "boolean",
														"description": "Whether this is the unambiguous default for its provider type."
													},
													"actions": {
														"type": "array",
														"items": {
															"type": "string"
														},
														"maxItems": 100,
														"description": "Credential- and feature-gate-filtered actions available through this connection."
													}
												},
												"additionalProperties": false,
												"required": [
													"id",
													"key",
													"name",
													"type",
													"is_default",
													"actions"
												]
											},
											"maxItems": 100,
											"description": "Connections visible to the authenticated principal."
										},
										"type_bundle": {
											"type": "object",
											"properties": {
												"files": {
													"type": "array",
													"items": {
														"type": "object",
														"properties": {
															"path": {
																"type": "string",
																"description": "Sandbox-relative TypeScript declaration path."
															},
															"content": {
																"type": "string",
																"description": "TypeScript declaration content."
															}
														},
														"additionalProperties": false,
														"required": ["path", "content"]
													},
													"maxItems": 200,
													"description": "TypeScript files for the current actor's connections."
												},
												"version": {
													"type": "string",
													"description": "Content hash for the delivered type bundle."
												}
											},
											"additionalProperties": false,
											"required": ["files", "version"],
											"description": "Actor-specific TypeScript declarations requested by the sandbox runtime."
										}
									},
									"additionalProperties": false,
									"required": ["object", "connections"]
								}
							}
						}
					},
					"400": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_400"
								}
							}
						}
					},
					"401": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_401"
								}
							}
						}
					},
					"403": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_403"
								}
							}
						}
					},
					"404": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_404"
								}
							}
						}
					},
					"406": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_406"
								}
							}
						}
					},
					"409": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_409"
								}
							}
						}
					},
					"429": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_429"
								}
							}
						}
					},
					"500": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_500"
								}
							}
						}
					},
					"503": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_503"
								}
							}
						}
					},
					"504": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_504"
								}
							}
						}
					},
					"529": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_529"
								}
							}
						}
					}
				}
			}
		},
		"/v1/data_sources": {
			"get": {
				"summary": "List data sources",
				"operationId": "get-databases",
				"tags": ["Internal"],
				"x-hidden": true,
				"x-noIndex": true,
				"parameters": [
					{
						"name": "start_cursor",
						"in": "query",
						"schema": {
							"type": "string",
							"description": "If supplied, this endpoint will return a page of results starting after the cursor provided. If not supplied, this endpoint will return the first page of results."
						}
					},
					{
						"name": "page_size",
						"in": "query",
						"schema": {
							"type": "integer",
							"minimum": 1,
							"maximum": 100,
							"description": "The number of items from the full list desired in the response. Maximum: 100"
						}
					},
					{
						"$ref": "#/components/parameters/notionVersion"
					}
				],
				"responses": {
					"200": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"object": {
											"type": "string",
											"const": "list",
											"description": "Always `list`"
										},
										"next_cursor": {
											"oneOf": [
												{
													"$ref": "#/components/schemas/idResponse"
												},
												{
													"type": "null"
												}
											]
										},
										"has_more": {
											"type": "boolean"
										},
										"results": {
											"type": "array",
											"items": {
												"oneOf": [
													{
														"$ref": "#/components/schemas/partialDataSourceObjectResponse"
													},
													{
														"$ref": "#/components/schemas/dataSourceObjectResponse"
													}
												]
											}
										},
										"type": {
											"type": "string",
											"const": "data_source",
											"description": "Always `data_source`"
										},
										"data_source": {
											"$ref": "#/components/schemas/emptyObject"
										},
										"request_status": {
											"$ref": "#/components/schemas/requestStatusResponse"
										}
									},
									"required": [
										"object",
										"next_cursor",
										"has_more",
										"results",
										"type",
										"data_source"
									],
									"additionalProperties": false
								}
							}
						}
					},
					"400": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_400"
								}
							}
						}
					},
					"401": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_401"
								}
							}
						}
					},
					"403": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_403"
								}
							}
						}
					},
					"404": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_404"
								}
							}
						}
					},
					"406": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_406"
								}
							}
						}
					},
					"409": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_409"
								}
							}
						}
					},
					"429": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_429"
								}
							}
						}
					},
					"500": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_500"
								}
							}
						}
					},
					"503": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_503"
								}
							}
						}
					},
					"504": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_504"
								}
							}
						}
					},
					"529": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_529"
								}
							}
						}
					}
				}
			}
		},
		"/v1/external_agent_stub/{agent_id}/sessions/{session_id}/events": {
			"get": {
				"summary": "List external agent stub session events",
				"operationId": "list-external-agent-stub-session-events",
				"tags": ["Internal"],
				"x-hidden": true,
				"x-noIndex": true,
				"parameters": [
					{
						"name": "agent_id",
						"in": "path",
						"required": true,
						"schema": {
							"oneOf": [
								{
									"$ref": "#/components/schemas/idRequest"
								},
								{
									"type": "string",
									"const": "33333333-3333-3333-3333-333333333333",
									"description": "Always `33333333-3333-3333-3333-333333333333`"
								}
							],
							"description": "The ID of the agent backing this external agent session."
						}
					},
					{
						"name": "session_id",
						"in": "path",
						"required": true,
						"schema": {
							"$ref": "#/components/schemas/idRequest",
							"description": "The provider-owned session ID returned when the session was created."
						}
					},
					{
						"name": "cursor",
						"in": "query",
						"schema": {
							"type": "string",
							"maxLength": 100,
							"description": "Opaque cursor returned by a previous call. Only events strictly after this cursor are returned."
						}
					},
					{
						"$ref": "#/components/parameters/notionVersion"
					}
				],
				"responses": {
					"200": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"events": {
											"type": "array",
											"items": {
												"oneOf": [
													{
														"type": "object",
														"properties": {
															"type": {
																"type": "string",
																"const": "assistant.thinking",
																"description": "Always `assistant.thinking`"
															},
															"text": {
																"type": "string"
															}
														},
														"additionalProperties": false,
														"required": ["type", "text"]
													},
													{
														"type": "object",
														"properties": {
															"type": {
																"type": "string",
																"const": "assistant.message",
																"description": "Always `assistant.message`"
															},
															"text": {
																"type": "string"
															}
														},
														"additionalProperties": false,
														"required": ["type", "text"]
													},
													{
														"type": "object",
														"properties": {
															"type": {
																"type": "string",
																"const": "tool.started",
																"description": "Always `tool.started`"
															},
															"tool_call_id": {
																"type": "string"
															},
															"tool_name": {
																"type": "string"
															},
															"input": {}
														},
														"additionalProperties": false,
														"required": ["type", "tool_call_id"]
													},
													{
														"type": "object",
														"properties": {
															"type": {
																"type": "string",
																"const": "tool.output",
																"description": "Always `tool.output`"
															},
															"tool_call_id": {
																"type": "string"
															},
															"output": {},
															"is_error": {
																"type": "boolean"
															}
														},
														"additionalProperties": false,
														"required": ["type", "tool_call_id"]
													},
													{
														"type": "object",
														"properties": {
															"type": {
																"type": "string",
																"const": "error",
																"description": "Always `error`"
															},
															"error": {
																"type": "object",
																"properties": {
																	"code": {
																		"type": "string"
																	},
																	"message": {
																		"type": "string"
																	},
																	"retryable": {
																		"type": "boolean"
																	},
																	"additional_data": {
																		"type": "object",
																		"additionalProperties": {
																			"oneOf": [
																				{
																					"type": "string"
																				},
																				{
																					"type": "array",
																					"items": {
																						"type": "string"
																					},
																					"maxItems": 100
																				}
																			]
																		}
																	}
																},
																"additionalProperties": false,
																"required": ["code", "message", "retryable"]
															}
														},
														"additionalProperties": false,
														"required": ["type", "error"]
													}
												]
											},
											"maxItems": 100
										},
										"is_running": {
											"type": "boolean"
										},
										"next_cursor": {
											"type": "string"
										}
									},
									"additionalProperties": false,
									"required": ["events", "is_running"]
								}
							}
						}
					},
					"400": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_400"
								}
							}
						}
					},
					"401": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_401"
								}
							}
						}
					},
					"403": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_403"
								}
							}
						}
					},
					"404": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_404"
								}
							}
						}
					},
					"406": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_406"
								}
							}
						}
					},
					"409": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_409"
								}
							}
						}
					},
					"429": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_429"
								}
							}
						}
					},
					"500": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_500"
								}
							}
						}
					},
					"503": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_503"
								}
							}
						}
					},
					"504": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_504"
								}
							}
						}
					},
					"529": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_529"
								}
							}
						}
					}
				},
				"x-notion-docs-ref": "https://developers.notion.com/reference/unreleased/external-agent-apis/list-external-agent-session-events"
			}
		},
		"/v1/teamspaces/{team_id}/membership": {
			"get": {
				"summary": "Lists team membership (users/groups that are owners/members) of a team.",
				"operationId": "listTeamMembership",
				"tags": ["Internal"],
				"x-hidden": true,
				"x-noIndex": true,
				"parameters": [
					{
						"name": "team_id",
						"in": "path",
						"required": true,
						"schema": {
							"$ref": "#/components/schemas/idRequest",
							"description": "The ID of the teamspace to retrieve membership for."
						}
					},
					{
						"name": "page_size",
						"in": "query",
						"schema": {
							"type": "integer",
							"minimum": 1,
							"maximum": 100,
							"description": "Number of Team Membership desired in the response. Maximum: 100"
						}
					},
					{
						"name": "start_cursor",
						"in": "query",
						"schema": {
							"type": "string",
							"description": "If supplied, this endpoint will return a page of results starting after the cursor provided. If not supplied, this endpoint will return the first page of results."
						}
					},
					{
						"$ref": "#/components/parameters/notionVersion"
					}
				],
				"responses": {
					"200": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"object": {
											"type": "string",
											"const": "list",
											"description": "Indicates this is a list response."
										},
										"type": {
											"type": "string",
											"const": "teamspace_member",
											"description": "The object type contained in the results array."
										},
										"results": {
											"type": "array",
											"items": {
												"type": "object",
												"properties": {
													"object": {
														"type": "string",
														"const": "teamspace_member",
														"description": "The teamspace member object type name."
													},
													"id": {
														"$ref": "#/components/schemas/idResponse",
														"description": "The ID of the user or group on the teamspace."
													},
													"type": {
														"type": "string",
														"enum": ["person", "group"],
														"description": "Type of the member: person or group."
													},
													"membership": {
														"type": "string",
														"enum": ["owner", "member"],
														"description": "Role of the member within the teamspace."
													}
												},
												"additionalProperties": false,
												"required": ["object", "id", "type", "membership"]
											},
											"maxItems": 100,
											"description": "Array of teamspace membership entries."
										},
										"id": {
											"$ref": "#/components/schemas/idResponse",
											"description": "The ID of the teamspace whose membership is listed."
										},
										"next_cursor": {
											"oneOf": [
												{
													"$ref": "#/components/schemas/idResponse"
												},
												{
													"type": "null"
												}
											],
											"description": "Cursor for the next page of results, or null if there are no more results."
										},
										"has_more": {
											"type": "boolean",
											"description": "Whether there are more results after this page."
										}
									},
									"additionalProperties": false,
									"required": [
										"object",
										"type",
										"results",
										"id",
										"next_cursor",
										"has_more"
									]
								}
							}
						}
					},
					"400": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_400"
								}
							}
						}
					},
					"401": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_401"
								}
							}
						}
					},
					"403": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_403"
								}
							}
						}
					},
					"404": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_404"
								}
							}
						}
					},
					"406": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_406"
								}
							}
						}
					},
					"409": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_409"
								}
							}
						}
					},
					"429": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_429"
								}
							}
						}
					},
					"500": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_500"
								}
							}
						}
					},
					"503": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_503"
								}
							}
						}
					},
					"504": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_504"
								}
							}
						}
					},
					"529": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_529"
								}
							}
						}
					}
				}
			},
			"patch": {
				"summary": "Updates team membership for a given team.",
				"operationId": "update-team-membership",
				"tags": ["Internal"],
				"x-hidden": true,
				"x-noIndex": true,
				"parameters": [
					{
						"name": "team_id",
						"in": "path",
						"required": true,
						"schema": {
							"$ref": "#/components/schemas/idRequest",
							"description": "The ID of the teamspace to update membership for."
						}
					},
					{
						"$ref": "#/components/parameters/notionVersion"
					}
				],
				"requestBody": {
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"type": "object",
								"properties": {
									"operations": {
										"type": "array",
										"items": {
											"oneOf": [
												{
													"type": "object",
													"properties": {
														"entity_id": {
															"$ref": "#/components/schemas/idRequest",
															"description": "The ID of the entity (person or group)."
														},
														"entity_type": {
															"type": "string",
															"enum": ["person", "group"],
															"description": "The type of entity being added, updated, or removed."
														},
														"op": {
															"type": "string",
															"const": "add",
															"description": "Always `add`"
														},
														"membership": {
															"type": "string",
															"enum": ["owner", "member"],
															"description": "Whether to add the entity as a teamspace owner or member."
														}
													},
													"required": [
														"entity_id",
														"entity_type",
														"op",
														"membership"
													]
												},
												{
													"type": "object",
													"properties": {
														"entity_id": {
															"$ref": "#/components/schemas/idRequest",
															"description": "The ID of the entity (person or group)."
														},
														"entity_type": {
															"type": "string",
															"enum": ["person", "group"],
															"description": "The type of entity being added, updated, or removed."
														},
														"op": {
															"type": "string",
															"const": "replace",
															"description": "Always `replace`"
														},
														"membership": {
															"type": "string",
															"enum": ["owner", "member"],
															"description": "Whether the entity should be an owner or member."
														}
													},
													"required": [
														"entity_id",
														"entity_type",
														"op",
														"membership"
													]
												},
												{
													"type": "object",
													"properties": {
														"entity_id": {
															"$ref": "#/components/schemas/idRequest",
															"description": "The ID of the entity (person or group)."
														},
														"entity_type": {
															"type": "string",
															"enum": ["person", "group"],
															"description": "The type of entity being added, updated, or removed."
														},
														"op": {
															"type": "string",
															"const": "remove",
															"description": "Always `remove`"
														}
													},
													"required": ["entity_id", "entity_type", "op"]
												}
											]
										},
										"maxItems": 100,
										"description": "Array of operations to perform on team's membership."
									}
								},
								"required": ["operations"]
							}
						}
					}
				},
				"responses": {
					"200": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/emptyObject"
								}
							}
						}
					},
					"400": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_400"
								}
							}
						}
					},
					"401": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_401"
								}
							}
						}
					},
					"403": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_403"
								}
							}
						}
					},
					"404": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_404"
								}
							}
						}
					},
					"406": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_406"
								}
							}
						}
					},
					"409": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_409"
								}
							}
						}
					},
					"429": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_429"
								}
							}
						}
					},
					"500": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_500"
								}
							}
						}
					},
					"503": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_503"
								}
							}
						}
					},
					"504": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_504"
								}
							}
						}
					},
					"529": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_529"
								}
							}
						}
					}
				}
			}
		},
		"/v1/teamspaces/{team_id}/permissions": {
			"get": {
				"summary": "List permission roles for various entities in a teamspace.",
				"operationId": "listTeamPermissions",
				"tags": ["Internal"],
				"x-hidden": true,
				"x-noIndex": true,
				"parameters": [
					{
						"name": "team_id",
						"in": "path",
						"required": true,
						"schema": {
							"$ref": "#/components/schemas/idRequest",
							"description": "The ID of the teamspace to retrieve permissions for"
						}
					},
					{
						"name": "page_size",
						"in": "query",
						"schema": {
							"type": "integer",
							"minimum": 1,
							"maximum": 100,
							"description": "Number of Team Permissions desired in the response. Maximum: 100"
						}
					},
					{
						"name": "start_cursor",
						"in": "query",
						"schema": {
							"type": "string",
							"description": "If supplied, this endpoint will return a page of results starting after the cursor provided. If not supplied, this endpoint will return the first page of results."
						}
					},
					{
						"$ref": "#/components/parameters/notionVersion"
					}
				],
				"responses": {
					"200": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"object": {
											"type": "string",
											"const": "list",
											"description": "Indicates this is a list response."
										},
										"type": {
											"type": "string",
											"const": "teamspace_permission",
											"description": "The object type contained in the results array."
										},
										"results": {
											"type": "array",
											"items": {
												"type": "object",
												"properties": {
													"object": {
														"type": "string",
														"const": "teamspace_permission",
														"description": "Indicates this is a teamspace permission response."
													},
													"id": {
														"$ref": "#/components/schemas/idResponse",
														"description": "The ID of corresponding permission type. E.g. space, team (for members and owners), group, or person id."
													},
													"type": {
														"type": "string",
														"enum": [
															"space",
															"owners",
															"members",
															"group",
															"person"
														],
														"description": "Type of permission: space, team owners, team members, custom group role, or custom person role."
													},
													"role": {
														"type": "string",
														"enum": [
															"can_read",
															"can_comment",
															"can_edit",
															"full_access"
														],
														"description": "Permission role within the teamspace."
													}
												},
												"additionalProperties": false,
												"required": ["object", "id", "type", "role"]
											},
											"maxItems": 100,
											"description": "Array of teamspace permission entries."
										},
										"id": {
											"$ref": "#/components/schemas/idResponse",
											"description": "The ID of the teamspace whose permissions are listed."
										},
										"next_cursor": {
											"oneOf": [
												{
													"$ref": "#/components/schemas/idResponse"
												},
												{
													"type": "null"
												}
											],
											"description": "Cursor for the next page of results, or null if there are no more results."
										},
										"has_more": {
											"type": "boolean",
											"description": "Whether there are more results after this page."
										}
									},
									"additionalProperties": false,
									"required": [
										"object",
										"type",
										"results",
										"id",
										"next_cursor",
										"has_more"
									]
								}
							}
						}
					},
					"400": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_400"
								}
							}
						}
					},
					"401": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_401"
								}
							}
						}
					},
					"403": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_403"
								}
							}
						}
					},
					"404": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_404"
								}
							}
						}
					},
					"406": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_406"
								}
							}
						}
					},
					"409": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_409"
								}
							}
						}
					},
					"429": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_429"
								}
							}
						}
					},
					"500": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_500"
								}
							}
						}
					},
					"503": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_503"
								}
							}
						}
					},
					"504": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_504"
								}
							}
						}
					},
					"529": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_529"
								}
							}
						}
					}
				}
			},
			"patch": {
				"summary": "Updates permission levels for a given teamspace.",
				"operationId": "update-teamspace-permissions",
				"tags": ["Internal"],
				"x-hidden": true,
				"x-noIndex": true,
				"parameters": [
					{
						"name": "team_id",
						"in": "path",
						"required": true,
						"schema": {
							"$ref": "#/components/schemas/idRequest",
							"description": "The ID of the teamspace to update permissions for."
						}
					},
					{
						"$ref": "#/components/parameters/notionVersion"
					}
				],
				"requestBody": {
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"type": "object",
								"properties": {
									"operations": {
										"type": "array",
										"items": {
											"type": "object",
											"properties": {
												"id": {
													"$ref": "#/components/schemas/idRequest",
													"description": "The ID of the space, teamspace, group, or person."
												},
												"type": {
													"type": "string",
													"enum": [
														"space",
														"owners",
														"members",
														"group",
														"person"
													],
													"description": "The type of entity assigned the permission."
												},
												"role": {
													"type": "string",
													"enum": [
														"none",
														"can_read",
														"can_comment",
														"can_edit",
														"full_access"
													],
													"description": "The permission role for the entity in the teamspace."
												}
											},
											"required": ["id", "type", "role"]
										},
										"maxItems": 100,
										"description": "Array of operations to perform on team's permissions."
									}
								},
								"required": ["operations"]
							}
						}
					}
				},
				"responses": {
					"200": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/emptyObject"
								}
							}
						}
					},
					"400": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_400"
								}
							}
						}
					},
					"401": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_401"
								}
							}
						}
					},
					"403": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_403"
								}
							}
						}
					},
					"404": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_404"
								}
							}
						}
					},
					"406": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_406"
								}
							}
						}
					},
					"409": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_409"
								}
							}
						}
					},
					"429": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_429"
								}
							}
						}
					},
					"500": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_500"
								}
							}
						}
					},
					"503": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_503"
								}
							}
						}
					},
					"504": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_504"
								}
							}
						}
					},
					"529": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_529"
								}
							}
						}
					}
				}
			}
		},
		"/v1/threads/{thread_id}/messages": {
			"get": {
				"summary": "List thread messages",
				"operationId": "list-thread-messages",
				"tags": ["Internal"],
				"x-hidden": true,
				"x-noIndex": true,
				"parameters": [
					{
						"name": "thread_id",
						"in": "path",
						"required": true,
						"schema": {
							"$ref": "#/components/schemas/idRequest",
							"description": "The ID of the thread."
						}
					},
					{
						"name": "verbose",
						"in": "query",
						"schema": {
							"type": "boolean",
							"description": "Whether to include agent thinking and structured message content parts. Defaults to false."
						}
					},
					{
						"name": "role",
						"in": "query",
						"schema": {
							"type": "string",
							"enum": ["user", "agent"],
							"description": "Filter messages by role (user or agent)."
						}
					},
					{
						"name": "start_cursor",
						"in": "query",
						"schema": {
							"type": "string",
							"description": "If supplied, this endpoint will return a page of results starting after the cursor provided. If not supplied, this endpoint will return the first page of results."
						}
					},
					{
						"name": "page_size",
						"in": "query",
						"schema": {
							"type": "integer",
							"minimum": 1,
							"maximum": 100,
							"description": "The number of items from the full list desired in the response. Maximum: 100"
						}
					},
					{
						"$ref": "#/components/parameters/notionVersion"
					}
				],
				"responses": {
					"200": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"object": {
											"type": "string",
											"const": "list",
											"description": "Always `list`"
										},
										"type": {
											"type": "string",
											"const": "thread_message",
											"description": "Always `thread_message`"
										},
										"results": {
											"type": "array",
											"items": {
												"type": "object",
												"properties": {
													"object": {
														"type": "string",
														"const": "thread_message",
														"description": "Always `thread_message`"
													},
													"id": {
														"$ref": "#/components/schemas/idResponse"
													},
													"role": {
														"type": "string",
														"enum": ["user", "agent"],
														"description": "One of: `user`, `agent`"
													},
													"content": {
														"type": "string"
													},
													"created_time": {
														"type": "string",
														"format": "date-time",
														"description": "Date and time when this message was created."
													},
													"parent": {
														"type": "object",
														"properties": {
															"type": {
																"type": "string",
																"const": "thread",
																"description": "The parent type."
															},
															"id": {
																"$ref": "#/components/schemas/idResponse",
																"description": "The ID of the parent thread."
															}
														},
														"additionalProperties": false,
														"required": ["type", "id"]
													},
													"attachments": {
														"type": "array",
														"items": {
															"type": "object",
															"properties": {
																"name": {
																	"type": "string"
																},
																"content_type": {
																	"type": "string"
																},
																"url": {
																	"type": "string"
																},
																"expiry_time": {
																	"type": "string",
																	"format": "date-time",
																	"description": "The time when the attachment URL will expire."
																}
															},
															"additionalProperties": false,
															"required": ["name", "content_type", "url"]
														}
													},
													"content_parts": {
														"type": "array",
														"items": {
															"oneOf": [
																{
																	"type": "object",
																	"properties": {
																		"type": {
																			"type": "string",
																			"const": "text",
																			"description": "Always `text`"
																		},
																		"text": {
																			"type": "string"
																		}
																	},
																	"additionalProperties": false,
																	"required": ["type", "text"]
																},
																{
																	"type": "object",
																	"properties": {
																		"type": {
																			"type": "string",
																			"const": "thinking",
																			"description": "Always `thinking`"
																		},
																		"text": {
																			"type": "string"
																		}
																	},
																	"additionalProperties": false,
																	"required": ["type", "text"]
																},
																{
																	"type": "object",
																	"properties": {
																		"type": {
																			"type": "string",
																			"const": "tool_call",
																			"description": "Always `tool_call`"
																		},
																		"tool_call_id": {
																			"oneOf": [
																				{
																					"type": "string"
																				},
																				{
																					"type": "null"
																				}
																			]
																		},
																		"tool_name": {
																			"type": "string"
																		},
																		"results": {
																			"type": "array",
																			"items": {
																				"type": "object",
																				"properties": {
																					"id": {
																						"$ref": "#/components/schemas/idResponse"
																					},
																					"agent_step_id": {
																						"oneOf": [
																							{
																								"$ref": "#/components/schemas/idResponse"
																							},
																							{
																								"type": "null"
																							}
																						]
																					},
																					"tool_call_id": {
																						"oneOf": [
																							{
																								"type": "string"
																							},
																							{
																								"type": "null"
																							}
																						]
																					},
																					"tool_name": {
																						"type": "string"
																					},
																					"tool_type": {
																						"type": "string"
																					},
																					"state": {
																						"type": "string"
																					},
																					"started_at": {
																						"type": "integer",
																						"minimum": 0
																					},
																					"finished_at": {
																						"oneOf": [
																							{
																								"type": "integer",
																								"minimum": 0
																							},
																							{
																								"type": "null"
																							}
																						]
																					},
																					"duration_ms": {
																						"oneOf": [
																							{
																								"type": "integer",
																								"minimum": 0
																							},
																							{
																								"type": "null"
																							}
																						]
																					}
																				},
																				"additionalProperties": false,
																				"required": [
																					"id",
																					"agent_step_id",
																					"tool_call_id",
																					"tool_name",
																					"tool_type",
																					"state",
																					"started_at",
																					"finished_at",
																					"duration_ms"
																				]
																			}
																		}
																	},
																	"additionalProperties": false,
																	"required": [
																		"type",
																		"tool_call_id",
																		"tool_name"
																	]
																},
																{
																	"type": "object",
																	"properties": {
																		"type": {
																			"type": "string",
																			"const": "follow_ups",
																			"description": "Always `follow_ups`"
																		},
																		"follow_ups": {
																			"type": "array",
																			"items": {
																				"type": "object",
																				"properties": {
																					"label": {
																						"type": "string"
																					},
																					"message": {
																						"type": "string"
																					}
																				},
																				"additionalProperties": false,
																				"required": ["label", "message"]
																			}
																		}
																	},
																	"additionalProperties": false,
																	"required": ["type", "follow_ups"]
																},
																{
																	"type": "object",
																	"properties": {
																		"type": {
																			"type": "string",
																			"const": "custom_agent_template_picker",
																			"description": "Always `custom_agent_template_picker`"
																		}
																	},
																	"additionalProperties": false,
																	"required": ["type"]
																}
															]
														}
													},
													"pending_user_actions": {
														"type": "array",
														"items": {
															"type": "object",
															"properties": {
																"id": {
																	"$ref": "#/components/schemas/idResponse"
																},
																"type": {
																	"type": "string",
																	"const": "tool_confirmation",
																	"description": "Always `tool_confirmation`"
																},
																"title": {
																	"type": "string"
																},
																"requirements": {
																	"type": "array",
																	"items": {
																		"oneOf": [
																			{
																				"type": "object",
																				"properties": {
																					"type": {
																						"type": "string",
																						"const": "general",
																						"description": "Always `general`"
																					}
																				},
																				"additionalProperties": false,
																				"required": ["type"]
																			},
																			{
																				"type": "object",
																				"properties": {
																					"type": {
																						"type": "string",
																						"const": "manage_workers",
																						"description": "Always `manage_workers`"
																					}
																				},
																				"additionalProperties": false,
																				"required": ["type"]
																			},
																			{
																				"type": "object",
																				"properties": {
																					"type": {
																						"type": "string",
																						"const": "url_safety",
																						"description": "Always `url_safety`"
																					},
																					"urls": {
																						"type": "array",
																						"items": {
																							"type": "string"
																						}
																					},
																					"required_by_workspace_policy": {
																						"type": "boolean"
																					}
																				},
																				"additionalProperties": false,
																				"required": ["type", "urls"]
																			},
																			{
																				"type": "object",
																				"properties": {
																					"type": {
																						"type": "string",
																						"const": "permission_escalation",
																						"description": "Always `permission_escalation`"
																					},
																					"destination_title": {
																						"type": "string"
																					},
																					"source_titles": {
																						"type": "array",
																						"items": {
																							"type": "string"
																						}
																					}
																				},
																				"additionalProperties": false,
																				"required": ["type"]
																			},
																			{
																				"type": "object",
																				"properties": {
																					"type": {
																						"type": "string",
																						"const": "delete_content",
																						"description": "Always `delete_content`"
																					},
																					"page_count": {
																						"type": "integer",
																						"minimum": 0
																					},
																					"database_count": {
																						"type": "integer",
																						"minimum": 0
																					},
																					"meeting_notes_block_count": {
																						"type": "integer",
																						"minimum": 0
																					}
																				},
																				"additionalProperties": false,
																				"required": [
																					"type",
																					"page_count",
																					"database_count"
																				]
																			},
																			{
																				"type": "object",
																				"properties": {
																					"type": {
																						"type": "string",
																						"const": "connect_integration",
																						"description": "Always `connect_integration`"
																					},
																					"integration_type": {
																						"type": "string"
																					},
																					"integration_name": {
																						"type": "string"
																					},
																					"handoff_url": {
																						"type": "string"
																					}
																				},
																				"additionalProperties": false,
																				"required": [
																					"type",
																					"integration_type",
																					"integration_name",
																					"handoff_url"
																				]
																			},
																			{
																				"type": "object",
																				"properties": {
																					"type": {
																						"type": "string",
																						"const": "admin_mode",
																						"description": "Always `admin_mode`"
																					},
																					"explanation": {
																						"type": "string"
																					}
																				},
																				"additionalProperties": false,
																				"required": ["type"]
																			}
																		],
																		"title": "Pending user action requirement"
																	}
																},
																"options": {
																	"type": "array",
																	"items": {
																		"oneOf": [
																			{
																				"type": "object",
																				"properties": {
																					"id": {
																						"type": "string",
																						"const": "approve",
																						"description": "Always `approve`"
																					},
																					"label": {
																						"type": "string"
																					}
																				},
																				"additionalProperties": false,
																				"required": ["id", "label"]
																			},
																			{
																				"type": "object",
																				"properties": {
																					"id": {
																						"type": "string",
																						"const": "reject",
																						"description": "Always `reject`"
																					},
																					"label": {
																						"type": "string"
																					}
																				},
																				"additionalProperties": false,
																				"required": ["id", "label"]
																			},
																			{
																				"type": "object",
																				"properties": {
																					"id": {
																						"type": "string",
																						"const": "use_connection",
																						"description": "Always `use_connection`"
																					},
																					"label": {
																						"type": "string"
																					},
																					"input": {
																						"type": "object",
																						"properties": {
																							"type": {
																								"type": "string",
																								"const": "connection_id",
																								"description": "Always `connection_id`"
																							},
																							"required": {
																								"type": "boolean",
																								"const": true,
																								"description": "Always `true`"
																							}
																						},
																						"additionalProperties": false,
																						"required": ["type", "required"]
																					}
																				},
																				"additionalProperties": false,
																				"required": ["id", "label", "input"]
																			}
																		],
																		"title": "Pending user action option"
																	}
																}
															},
															"additionalProperties": false,
															"required": [
																"id",
																"type",
																"title",
																"requirements",
																"options"
															]
														}
													}
												},
												"additionalProperties": false,
												"required": [
													"object",
													"id",
													"role",
													"content",
													"created_time",
													"parent"
												]
											},
											"maxItems": 100
										},
										"has_more": {
											"type": "boolean"
										},
										"next_cursor": {
											"oneOf": [
												{
													"title": "Cursor",
													"type": "string"
												},
												{
													"type": "null"
												}
											]
										}
									},
									"additionalProperties": false,
									"required": [
										"object",
										"type",
										"results",
										"has_more",
										"next_cursor"
									]
								}
							}
						}
					},
					"400": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_400"
								}
							}
						}
					},
					"401": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_401"
								}
							}
						}
					},
					"403": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_403"
								}
							}
						}
					},
					"404": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_404"
								}
							}
						}
					},
					"406": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_406"
								}
							}
						}
					},
					"409": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_409"
								}
							}
						}
					},
					"429": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_429"
								}
							}
						}
					},
					"500": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_500"
								}
							}
						}
					},
					"503": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_503"
								}
							}
						}
					},
					"504": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_504"
								}
							}
						}
					},
					"529": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_529"
								}
							}
						}
					}
				},
				"deprecated": true,
				"x-notion-docs-ref": "https://developers.notion.com/reference/internal/list-thread-messages"
			},
			"post": {
				"summary": "Send a thread message",
				"operationId": "send-thread-message",
				"tags": ["Internal"],
				"x-hidden": true,
				"x-noIndex": true,
				"parameters": [
					{
						"name": "thread_id",
						"in": "path",
						"required": true,
						"schema": {
							"$ref": "#/components/schemas/idRequest",
							"description": "The ID of the thread."
						}
					},
					{
						"$ref": "#/components/parameters/notionVersion"
					}
				],
				"requestBody": {
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"type": "object",
								"properties": {
									"message": {
										"type": "string",
										"maxLength": 10000,
										"description": "The message to send to the agent."
									},
									"attachments": {
										"type": "array",
										"items": {
											"type": "object",
											"properties": {
												"file_upload": {
													"type": "object",
													"properties": {
														"id": {
															"type": "string",
															"description": "ID of a FileUpload object that has the status `uploaded`."
														}
													},
													"additionalProperties": false,
													"required": ["id"],
													"description": "ID of a FileUpload object that has the status `uploaded`."
												},
												"type": {
													"type": "string",
													"const": "file_upload",
													"description": "The type of the attachment. Only supports \"file_upload\"."
												},
												"name": {
													"type": "string",
													"description": "An optional display name override for the attachment."
												}
											},
											"additionalProperties": false,
											"required": ["file_upload"]
										},
										"maxItems": 100,
										"description": "An array of file uploads to attach to this chat turn. Use the File Upload APIs to create uploads and pass their IDs here."
									},
									"metadata": {
										"type": "object",
										"additionalProperties": {
											"type": "string",
											"maxLength": 2000
										},
										"maxProperties": 20,
										"description": "Optional caller-provided string metadata persisted with the user message. user_id is used for lifecycle correlation and does not change authorization."
									},
									"prompt_context": {
										"type": "string",
										"maxLength": 10000,
										"description": "Additional caller-provided context for the agent to consider while responding."
									}
								},
								"additionalProperties": false
							}
						}
					}
				},
				"responses": {
					"200": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"object": {
											"type": "string",
											"const": "chat.invocation",
											"description": "Always `chat.invocation`"
										},
										"agent_id": {
											"type": "string"
										},
										"thread_id": {
											"type": "string"
										},
										"invocation_id": {
											"type": "string"
										},
										"status": {
											"type": "string",
											"const": "pending",
											"description": "Always `pending`"
										}
									},
									"additionalProperties": false,
									"required": [
										"object",
										"agent_id",
										"thread_id",
										"invocation_id",
										"status"
									]
								}
							}
						}
					},
					"400": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_400"
								}
							}
						}
					},
					"401": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_401"
								}
							}
						}
					},
					"403": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_403"
								}
							}
						}
					},
					"404": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_404"
								}
							}
						}
					},
					"406": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_406"
								}
							}
						}
					},
					"409": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_409"
								}
							}
						}
					},
					"429": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_429"
								}
							}
						}
					},
					"500": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_500"
								}
							}
						}
					},
					"503": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_503"
								}
							}
						}
					},
					"504": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_504"
								}
							}
						}
					},
					"529": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_529"
								}
							}
						}
					}
				},
				"deprecated": true
			}
		},
		"/v1/agents/{agent_id}/threads": {
			"get": {
				"summary": "List threads",
				"operationId": "list-threads",
				"tags": ["Internal"],
				"x-hidden": true,
				"x-noIndex": true,
				"parameters": [
					{
						"name": "agent_id",
						"in": "path",
						"required": true,
						"schema": {
							"oneOf": [
								{
									"$ref": "#/components/schemas/idRequest"
								},
								{
									"type": "string",
									"enum": ["notion_ai", "33333333-3333-3333-3333-333333333333"],
									"description": "One of: `notion_ai`, `33333333-3333-3333-3333-333333333333`"
								}
							],
							"description": "The ID of the agent. Use a UUID for custom agents or `notion_ai` for Notion Agent (personal agent); the reserved UUID `33333333-3333-3333-3333-333333333333` remains supported for backward compatibility."
						}
					},
					{
						"name": "id",
						"in": "query",
						"schema": {
							"$ref": "#/components/schemas/idRequest",
							"description": "Filter threads by ID (exact match)."
						}
					},
					{
						"name": "title",
						"in": "query",
						"schema": {
							"type": "string",
							"description": "Filter threads by title (case-insensitive substring match)."
						}
					},
					{
						"name": "status",
						"in": "query",
						"schema": {
							"type": "string",
							"enum": [
								"pending",
								"requires_action",
								"completed",
								"failed",
								"canceled"
							],
							"description": "Filter threads by status."
						}
					},
					{
						"name": "activity",
						"in": "query",
						"schema": {
							"type": "string",
							"enum": ["all", "pending", "in_progress", "failed", "success"],
							"description": "Filter threads by agent activity state. Defaults to `all`."
						}
					},
					{
						"name": "created_by",
						"in": "query",
						"schema": {
							"type": "array",
							"items": {
								"oneOf": [
									{
										"$ref": "#/components/schemas/idRequest"
									},
									{
										"type": "string",
										"const": "me",
										"description": "Always `me`"
									}
								]
							},
							"maxItems": 100,
							"minItems": 1,
							"description": "Filter threads by one or more creator IDs. Use \"me\" for the API bot and user associated with the API token."
						}
					},
					{
						"name": "last_used_by",
						"in": "query",
						"schema": {
							"type": "array",
							"items": {
								"oneOf": [
									{
										"$ref": "#/components/schemas/idRequest"
									},
									{
										"type": "string",
										"const": "me",
										"description": "Always `me`"
									}
								]
							},
							"maxItems": 100,
							"minItems": 1,
							"description": "Filter threads by one or more IDs of actors who last used them. Use \"me\" for the API bot and user associated with the API token."
						}
					},
					{
						"name": "sort_by",
						"in": "query",
						"schema": {
							"type": "string",
							"enum": ["created_time", "last_used_time"],
							"description": "Timestamp used to sort threads. Defaults to `created_time`."
						}
					},
					{
						"name": "sort_direction",
						"in": "query",
						"schema": {
							"type": "string",
							"enum": ["ascending", "descending"],
							"description": "Sort direction. Defaults to `descending`."
						}
					},
					{
						"name": "start_cursor",
						"in": "query",
						"schema": {
							"type": "string",
							"description": "If supplied, this endpoint will return a page of results starting after the cursor provided. If not supplied, this endpoint will return the first page of results."
						}
					},
					{
						"name": "page_size",
						"in": "query",
						"schema": {
							"type": "integer",
							"minimum": 1,
							"maximum": 100,
							"description": "The number of items from the full list desired in the response. Maximum: 100"
						}
					},
					{
						"$ref": "#/components/parameters/notionVersion"
					}
				],
				"responses": {
					"200": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"object": {
											"type": "string",
											"const": "list",
											"description": "Always `list`"
										},
										"type": {
											"type": "string",
											"const": "thread",
											"description": "Always `thread`"
										},
										"results": {
											"type": "array",
											"items": {
												"type": "object",
												"properties": {
													"object": {
														"type": "string",
														"const": "thread",
														"description": "Always `thread`"
													},
													"id": {
														"$ref": "#/components/schemas/idResponse"
													},
													"title": {
														"type": "string"
													},
													"status": {
														"type": "string",
														"enum": [
															"pending",
															"requires_action",
															"completed",
															"canceled",
															"failed"
														],
														"description": "One of: `pending`, `requires_action`, `completed`, `canceled`, `failed`"
													},
													"created_time": {
														"type": "string",
														"format": "date-time",
														"description": "Date and time when this thread was created."
													},
													"last_edited_time": {
														"type": "string",
														"format": "date-time",
														"description": "Date and time when this thread was last updated."
													},
													"created_by": {
														"type": "object",
														"properties": {
															"id": {
																"$ref": "#/components/schemas/idResponse",
																"description": "The ID of the actor that created this thread: a bot for an integration-created thread, a user for one created in the Notion app."
															},
															"type": {
																"type": "string",
																"enum": ["bot", "user"],
																"description": "The creator type. Threads a caller can see because it has access to the agent, such as a trigger's runs or a teammate's chats, may be created by either a bot or a user."
															}
														},
														"additionalProperties": false,
														"required": ["id", "type"]
													},
													"agent_version": {
														"oneOf": [
															{
																"type": "object",
																"properties": {
																	"id": {
																		"$ref": "#/components/schemas/idResponse",
																		"description": "The ID of the published artifact."
																	},
																	"number": {
																		"type": "number",
																		"description": "The version number."
																	},
																	"published_at": {
																		"type": "string",
																		"description": "The ISO 8601 timestamp when this version was published."
																	}
																},
																"additionalProperties": false,
																"required": ["id", "number", "published_at"]
															},
															{
																"type": "null"
															}
														]
													},
													"models": {
														"oneOf": [
															{
																"type": "object",
																"properties": {
																	"type": {
																		"type": "string",
																		"const": "auto",
																		"description": "Always `auto`"
																	}
																},
																"additionalProperties": false,
																"required": ["type"]
															},
															{
																"type": "object",
																"properties": {
																	"type": {
																		"type": "string",
																		"const": "pinned",
																		"description": "Always `pinned`"
																	},
																	"ids": {
																		"type": "array",
																		"items": {
																			"oneOf": [
																				{
																					"type": "string"
																				},
																				{
																					"type": "null"
																				}
																			]
																		},
																		"description": "The public model this thread is pinned to (e.g. \"claude-sonnet-5\"), with null for a pre-release / early-access model. Empty when the thread has no model recorded yet. Reflects the thread's configuration at creation, so a model changed mid-conversation is not reflected here."
																	}
																},
																"additionalProperties": false,
																"required": ["type", "ids"]
															}
														]
													},
													"error": {
														"type": "string"
													},
													"trigger_type": {
														"type": "string",
														"description": "How this thread started: the type of the trigger that ran it, or \"chat\"."
													},
													"type_labels": {
														"oneOf": [
															{
																"type": "array",
																"items": {
																	"type": "string"
																}
															},
															{
																"type": "null"
															}
														],
														"description": "Labels describing how the thread ran (triggered, chat, setup). Null when the caller lacks edit access to the agent."
													},
													"chat_user_emails": {
														"oneOf": [
															{
																"type": "array",
																"items": {
																	"type": "string"
																}
															},
															{
																"type": "null"
															}
														],
														"description": "Emails of the users who participated in this thread. Null when the caller lacks edit access to the agent."
													},
													"tool_types": {
														"oneOf": [
															{
																"type": "array",
																"items": {
																	"type": "string"
																}
															},
															{
																"type": "null"
															}
														],
														"description": "Types of tool this thread called. Null when the caller lacks edit access to the agent."
													},
													"tool_call_count": {
														"oneOf": [
															{
																"type": "number"
															},
															{
																"type": "null"
															}
														],
														"description": "Number of tool calls in this thread. Null when the caller lacks edit access to the agent."
													},
													"credits_used": {
														"oneOf": [
															{
																"type": "number"
															},
															{
																"type": "null"
															}
														],
														"description": "Premium AI credits this thread consumed. Null when the caller lacks edit access to the agent. Reported with at most two decimal places, rounded down."
													},
													"runs_completed": {
														"oneOf": [
															{
																"type": "number"
															},
															{
																"type": "null"
															}
														],
														"description": "Runs completed in this thread. Null when the caller lacks edit access to the agent, or when the thread predates run tracking."
													},
													"pending_user_actions": {
														"type": "array",
														"items": {
															"type": "object",
															"properties": {
																"id": {
																	"$ref": "#/components/schemas/idResponse"
																},
																"type": {
																	"type": "string",
																	"const": "tool_confirmation",
																	"description": "Always `tool_confirmation`"
																},
																"title": {
																	"type": "string"
																},
																"requirements": {
																	"type": "array",
																	"items": {
																		"oneOf": [
																			{
																				"type": "object",
																				"properties": {
																					"type": {
																						"type": "string",
																						"const": "general",
																						"description": "Always `general`"
																					}
																				},
																				"additionalProperties": false,
																				"required": ["type"]
																			},
																			{
																				"type": "object",
																				"properties": {
																					"type": {
																						"type": "string",
																						"const": "manage_workers",
																						"description": "Always `manage_workers`"
																					}
																				},
																				"additionalProperties": false,
																				"required": ["type"]
																			},
																			{
																				"type": "object",
																				"properties": {
																					"type": {
																						"type": "string",
																						"const": "url_safety",
																						"description": "Always `url_safety`"
																					},
																					"urls": {
																						"type": "array",
																						"items": {
																							"type": "string"
																						}
																					},
																					"required_by_workspace_policy": {
																						"type": "boolean"
																					}
																				},
																				"additionalProperties": false,
																				"required": ["type", "urls"]
																			},
																			{
																				"type": "object",
																				"properties": {
																					"type": {
																						"type": "string",
																						"const": "permission_escalation",
																						"description": "Always `permission_escalation`"
																					},
																					"destination_title": {
																						"type": "string"
																					},
																					"source_titles": {
																						"type": "array",
																						"items": {
																							"type": "string"
																						}
																					}
																				},
																				"additionalProperties": false,
																				"required": ["type"]
																			},
																			{
																				"type": "object",
																				"properties": {
																					"type": {
																						"type": "string",
																						"const": "delete_content",
																						"description": "Always `delete_content`"
																					},
																					"page_count": {
																						"type": "integer",
																						"minimum": 0
																					},
																					"database_count": {
																						"type": "integer",
																						"minimum": 0
																					},
																					"meeting_notes_block_count": {
																						"type": "integer",
																						"minimum": 0
																					}
																				},
																				"additionalProperties": false,
																				"required": [
																					"type",
																					"page_count",
																					"database_count"
																				]
																			},
																			{
																				"type": "object",
																				"properties": {
																					"type": {
																						"type": "string",
																						"const": "connect_integration",
																						"description": "Always `connect_integration`"
																					},
																					"integration_type": {
																						"type": "string"
																					},
																					"integration_name": {
																						"type": "string"
																					},
																					"handoff_url": {
																						"type": "string"
																					}
																				},
																				"additionalProperties": false,
																				"required": [
																					"type",
																					"integration_type",
																					"integration_name",
																					"handoff_url"
																				]
																			},
																			{
																				"type": "object",
																				"properties": {
																					"type": {
																						"type": "string",
																						"const": "admin_mode",
																						"description": "Always `admin_mode`"
																					},
																					"explanation": {
																						"type": "string"
																					}
																				},
																				"additionalProperties": false,
																				"required": ["type"]
																			}
																		],
																		"title": "Pending user action requirement"
																	}
																},
																"options": {
																	"type": "array",
																	"items": {
																		"oneOf": [
																			{
																				"type": "object",
																				"properties": {
																					"id": {
																						"type": "string",
																						"const": "approve",
																						"description": "Always `approve`"
																					},
																					"label": {
																						"type": "string"
																					}
																				},
																				"additionalProperties": false,
																				"required": ["id", "label"]
																			},
																			{
																				"type": "object",
																				"properties": {
																					"id": {
																						"type": "string",
																						"const": "reject",
																						"description": "Always `reject`"
																					},
																					"label": {
																						"type": "string"
																					}
																				},
																				"additionalProperties": false,
																				"required": ["id", "label"]
																			},
																			{
																				"type": "object",
																				"properties": {
																					"id": {
																						"type": "string",
																						"const": "use_connection",
																						"description": "Always `use_connection`"
																					},
																					"label": {
																						"type": "string"
																					},
																					"input": {
																						"type": "object",
																						"properties": {
																							"type": {
																								"type": "string",
																								"const": "connection_id",
																								"description": "Always `connection_id`"
																							},
																							"required": {
																								"type": "boolean",
																								"const": true,
																								"description": "Always `true`"
																							}
																						},
																						"additionalProperties": false,
																						"required": ["type", "required"]
																					}
																				},
																				"additionalProperties": false,
																				"required": ["id", "label", "input"]
																			}
																		],
																		"title": "Pending user action option"
																	}
																}
															},
															"additionalProperties": false,
															"required": [
																"id",
																"type",
																"title",
																"requirements",
																"options"
															]
														}
													}
												},
												"additionalProperties": false,
												"required": [
													"object",
													"id",
													"title",
													"status",
													"created_time",
													"last_edited_time",
													"created_by",
													"agent_version",
													"models"
												]
											},
											"maxItems": 100
										},
										"has_more": {
											"type": "boolean"
										},
										"next_cursor": {
											"oneOf": [
												{
													"title": "Cursor",
													"type": "string"
												},
												{
													"type": "null"
												}
											]
										}
									},
									"additionalProperties": false,
									"required": [
										"object",
										"type",
										"results",
										"has_more",
										"next_cursor"
									]
								}
							}
						}
					},
					"400": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_400"
								}
							}
						}
					},
					"401": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_401"
								}
							}
						}
					},
					"403": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_403"
								}
							}
						}
					},
					"404": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_404"
								}
							}
						}
					},
					"406": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_406"
								}
							}
						}
					},
					"409": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_409"
								}
							}
						}
					},
					"429": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_429"
								}
							}
						}
					},
					"500": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_500"
								}
							}
						}
					},
					"503": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_503"
								}
							}
						}
					},
					"504": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_504"
								}
							}
						}
					},
					"529": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_529"
								}
							}
						}
					}
				},
				"deprecated": true,
				"x-notion-docs-ref": "https://developers.notion.com/reference/internal/list-threads"
			}
		},
		"/v1/tools": {
			"get": {
				"summary": "List tools",
				"operationId": "list-tools",
				"tags": ["Internal"],
				"x-hidden": true,
				"x-noIndex": true,
				"parameters": [
					{
						"$ref": "#/components/parameters/notionVersion"
					}
				],
				"responses": {
					"200": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"object": {
											"type": "string",
											"const": "list",
											"description": "Always `list`."
										},
										"type": {
											"type": "string",
											"const": "tool",
											"description": "Always `tool`."
										},
										"results": {
											"type": "array",
											"items": {
												"type": "object",
												"properties": {
													"object": {
														"type": "string",
														"const": "tool",
														"description": "Always `tool`."
													},
													"id": {
														"type": "string",
														"description": "The tool id. Use it as the `tool_id` path parameter when running the tool."
													},
													"title": {
														"type": "string",
														"description": "A short human-readable name."
													},
													"description": {
														"type": "string",
														"description": "What the tool does and how to use it."
													},
													"maturity": {
														"type": "string",
														"enum": ["unstable", "beta", "stable"],
														"description": "`stable` tools are covered by API versioning. `beta` tools may change between versions."
													},
													"annotations": {
														"type": "object",
														"properties": {
															"is_read_only": {
																"type": "boolean",
																"description": "The tool does not change any Notion data."
															},
															"is_destructive": {
																"type": "boolean",
																"description": "The tool may delete or overwrite data."
															},
															"is_idempotent": {
																"type": "boolean",
																"description": "Repeating a call with the same input has no extra effect."
															},
															"is_open_world": {
																"type": "boolean",
																"description": "The tool reaches systems outside Notion, such as email or calendar providers."
															}
														},
														"additionalProperties": false,
														"required": [
															"is_read_only",
															"is_destructive",
															"is_idempotent",
															"is_open_world"
														],
														"description": "Hints about the tool's side effects."
													},
													"input_schema": {
														"description": "JSON Schema for the request body accepted by `POST /v1/tools/{tool_id}`."
													}
												},
												"additionalProperties": false,
												"required": [
													"object",
													"id",
													"title",
													"description",
													"maturity",
													"annotations",
													"input_schema"
												]
											},
											"maxItems": 200,
											"description": "The tools this credential can run, in catalog order."
										},
										"has_more": {
											"type": "boolean",
											"const": false,
											"description": "The catalog is returned in one page."
										},
										"next_cursor": {
											"type": "null",
											"description": "Always `null`; the catalog is returned in one page."
										}
									},
									"additionalProperties": false,
									"required": [
										"object",
										"type",
										"results",
										"has_more",
										"next_cursor"
									]
								}
							}
						}
					},
					"400": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_400"
								}
							}
						}
					},
					"401": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_401"
								}
							}
						}
					},
					"403": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_403"
								}
							}
						}
					},
					"404": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_404"
								}
							}
						}
					},
					"406": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_406"
								}
							}
						}
					},
					"409": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_409"
								}
							}
						}
					},
					"429": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_429"
								}
							}
						}
					},
					"500": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_500"
								}
							}
						}
					},
					"503": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_503"
								}
							}
						}
					},
					"504": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_504"
								}
							}
						}
					},
					"529": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_529"
								}
							}
						}
					}
				}
			}
		},
		"/v1/oauth/ema/resolve": {
			"post": {
				"summary": "Resolve an EMA ID-JAG identity to an MCP access token",
				"operationId": "ema-resolve-identity",
				"security": [
					{
						"basicAuth": []
					}
				],
				"tags": ["Internal"],
				"x-hidden": true,
				"x-noIndex": true,
				"parameters": [
					{
						"$ref": "#/components/parameters/notionVersion"
					}
				],
				"requestBody": {
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"type": "object",
								"properties": {
									"issuer": {
										"type": "string"
									},
									"subject": {
										"type": "string"
									},
									"oauth_client_id": {
										"type": "string"
									},
									"resource": {
										"type": "string"
									},
									"requested_scope": {
										"type": "array",
										"items": {
											"type": "string"
										}
									},
									"email": {
										"type": "string"
									},
									"aud_tenant": {
										"type": "string"
									},
									"redirect_uri": {
										"type": "string"
									}
								},
								"required": [
									"issuer",
									"subject",
									"oauth_client_id",
									"resource",
									"requested_scope"
								]
							}
						}
					}
				},
				"responses": {
					"200": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"user_id": {
											"type": "string",
											"format": "uuid"
										},
										"space_id": {
											"type": "string",
											"format": "uuid"
										},
										"access_token": {
											"type": "string"
										},
										"request_id": {
											"type": "string",
											"format": "uuid"
										}
									},
									"required": ["user_id", "space_id", "access_token"]
								}
							}
						}
					},
					"400": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_oauth_400"
								}
							}
						}
					},
					"401": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_oauth_401"
								}
							}
						}
					},
					"403": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_oauth_403"
								}
							}
						}
					},
					"500": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_oauth_500"
								}
							}
						}
					}
				}
			}
		},
		"/v1/oauth/ema/setup": {
			"post": {
				"summary": "Complete an EMA platform setup",
				"operationId": "ema-complete-platform-setup",
				"security": [
					{
						"basicAuth": []
					}
				],
				"tags": ["Internal"],
				"x-hidden": true,
				"x-noIndex": true,
				"parameters": [
					{
						"$ref": "#/components/parameters/notionVersion"
					}
				],
				"requestBody": {
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"type": "object",
								"properties": {
									"code": {
										"type": "string"
									},
									"redirect_uri": {
										"type": "string"
									},
									"client_id": {
										"type": "string"
									},
									"ema_issuer": {
										"type": "string"
									}
								},
								"required": ["code", "redirect_uri", "client_id", "ema_issuer"]
							}
						}
					}
				},
				"responses": {
					"200": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"anyOf": [
										{
											"type": "object",
											"properties": {
												"aud_tenant": {
													"type": "string"
												}
											},
											"required": ["aud_tenant"]
										},
										{
											"type": "object",
											"properties": {
												"error": {
													"anyOf": [
														{
															"type": "string",
															"const": "access_denied"
														},
														{
															"type": "string",
															"const": "invalid_issuer"
														},
														{
															"type": "string",
															"const": "issuer_in_use"
														},
														{
															"type": "string",
															"const": "invalid_grant"
														}
													]
												},
												"error_description": {
													"type": "string"
												}
											},
											"required": ["error", "error_description"]
										}
									]
								}
							}
						}
					},
					"400": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_oauth_400"
								}
							}
						}
					},
					"401": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_oauth_401"
								}
							}
						}
					},
					"403": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_oauth_403"
								}
							}
						}
					},
					"500": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_oauth_500"
								}
							}
						}
					}
				}
			}
		},
		"/v1/oauth/ema/trusted-issuer": {
			"post": {
				"summary": "Resolve an EMA trusted issuer",
				"operationId": "ema-resolve-trusted-issuer",
				"security": [
					{
						"basicAuth": []
					}
				],
				"tags": ["Internal"],
				"x-hidden": true,
				"x-noIndex": true,
				"parameters": [
					{
						"$ref": "#/components/parameters/notionVersion"
					}
				],
				"requestBody": {
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"type": "object",
								"properties": {
									"issuer": {
										"type": "string"
									}
								},
								"required": ["issuer"]
							}
						}
					}
				},
				"responses": {
					"200": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"issuer": {
											"type": "string"
										},
										"request_id": {
											"type": "string",
											"format": "uuid"
										}
									},
									"required": ["issuer"]
								}
							}
						}
					},
					"400": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_oauth_400"
								}
							}
						}
					},
					"401": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_oauth_401"
								}
							}
						}
					},
					"403": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_oauth_403"
								}
							}
						}
					},
					"500": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_oauth_500"
								}
							}
						}
					}
				}
			}
		},
		"/v1/threads/{thread_id}/messages/query": {
			"post": {
				"summary": "Query thread messages",
				"operationId": "query-thread-messages",
				"tags": ["Internal"],
				"x-hidden": true,
				"x-noIndex": true,
				"parameters": [
					{
						"name": "thread_id",
						"in": "path",
						"required": true,
						"schema": {
							"$ref": "#/components/schemas/idRequest",
							"description": "The ID of the thread."
						}
					},
					{
						"$ref": "#/components/parameters/notionVersion"
					}
				],
				"requestBody": {
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"type": "object",
								"properties": {
									"verbose": {
										"type": "boolean",
										"description": "Whether to include agent thinking and structured message content parts. Defaults to false."
									},
									"start_cursor": {
										"type": "string",
										"description": "Opaque continuation cursor from the previous page."
									},
									"page_size": {
										"type": "integer",
										"minimum": 1,
										"maximum": 100,
										"description": "Number of messages to return. Maximum: 100."
									}
								},
								"additionalProperties": false
							}
						}
					}
				},
				"responses": {
					"200": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"object": {
											"type": "string",
											"const": "list",
											"description": "Always `list`"
										},
										"type": {
											"type": "string",
											"const": "thread_message",
											"description": "Always `thread_message`"
										},
										"results": {
											"type": "array",
											"items": {
												"type": "object",
												"properties": {
													"object": {
														"type": "string",
														"const": "thread_message",
														"description": "Always `thread_message`"
													},
													"id": {
														"$ref": "#/components/schemas/idResponse"
													},
													"role": {
														"type": "string",
														"enum": ["user", "agent"],
														"description": "One of: `user`, `agent`"
													},
													"content": {
														"type": "string"
													},
													"created_time": {
														"type": "string",
														"format": "date-time",
														"description": "Date and time when this message was created."
													},
													"parent": {
														"type": "object",
														"properties": {
															"type": {
																"type": "string",
																"const": "thread",
																"description": "The parent type."
															},
															"id": {
																"$ref": "#/components/schemas/idResponse",
																"description": "The ID of the parent thread."
															}
														},
														"additionalProperties": false,
														"required": ["type", "id"]
													},
													"attachments": {
														"type": "array",
														"items": {
															"type": "object",
															"properties": {
																"name": {
																	"type": "string"
																},
																"content_type": {
																	"type": "string"
																},
																"url": {
																	"type": "string"
																},
																"expiry_time": {
																	"type": "string",
																	"format": "date-time",
																	"description": "The time when the attachment URL will expire."
																}
															},
															"additionalProperties": false,
															"required": ["name", "content_type", "url"]
														}
													},
													"content_parts": {
														"type": "array",
														"items": {
															"oneOf": [
																{
																	"type": "object",
																	"properties": {
																		"type": {
																			"type": "string",
																			"const": "text",
																			"description": "Always `text`"
																		},
																		"text": {
																			"type": "string"
																		}
																	},
																	"additionalProperties": false,
																	"required": ["type", "text"]
																},
																{
																	"type": "object",
																	"properties": {
																		"type": {
																			"type": "string",
																			"const": "thinking",
																			"description": "Always `thinking`"
																		},
																		"text": {
																			"type": "string"
																		}
																	},
																	"additionalProperties": false,
																	"required": ["type", "text"]
																},
																{
																	"type": "object",
																	"properties": {
																		"type": {
																			"type": "string",
																			"const": "tool_call",
																			"description": "Always `tool_call`"
																		},
																		"tool_call_id": {
																			"oneOf": [
																				{
																					"type": "string"
																				},
																				{
																					"type": "null"
																				}
																			]
																		},
																		"tool_name": {
																			"type": "string"
																		},
																		"results": {
																			"type": "array",
																			"items": {
																				"type": "object",
																				"properties": {
																					"id": {
																						"$ref": "#/components/schemas/idResponse"
																					},
																					"agent_step_id": {
																						"oneOf": [
																							{
																								"$ref": "#/components/schemas/idResponse"
																							},
																							{
																								"type": "null"
																							}
																						]
																					},
																					"tool_call_id": {
																						"oneOf": [
																							{
																								"type": "string"
																							},
																							{
																								"type": "null"
																							}
																						]
																					},
																					"tool_name": {
																						"type": "string"
																					},
																					"tool_type": {
																						"type": "string"
																					},
																					"state": {
																						"type": "string"
																					},
																					"started_at": {
																						"type": "integer",
																						"minimum": 0
																					},
																					"finished_at": {
																						"oneOf": [
																							{
																								"type": "integer",
																								"minimum": 0
																							},
																							{
																								"type": "null"
																							}
																						]
																					},
																					"duration_ms": {
																						"oneOf": [
																							{
																								"type": "integer",
																								"minimum": 0
																							},
																							{
																								"type": "null"
																							}
																						]
																					}
																				},
																				"additionalProperties": false,
																				"required": [
																					"id",
																					"agent_step_id",
																					"tool_call_id",
																					"tool_name",
																					"tool_type",
																					"state",
																					"started_at",
																					"finished_at",
																					"duration_ms"
																				]
																			}
																		}
																	},
																	"additionalProperties": false,
																	"required": [
																		"type",
																		"tool_call_id",
																		"tool_name"
																	]
																},
																{
																	"type": "object",
																	"properties": {
																		"type": {
																			"type": "string",
																			"const": "follow_ups",
																			"description": "Always `follow_ups`"
																		},
																		"follow_ups": {
																			"type": "array",
																			"items": {
																				"type": "object",
																				"properties": {
																					"label": {
																						"type": "string"
																					},
																					"message": {
																						"type": "string"
																					}
																				},
																				"additionalProperties": false,
																				"required": ["label", "message"]
																			}
																		}
																	},
																	"additionalProperties": false,
																	"required": ["type", "follow_ups"]
																},
																{
																	"type": "object",
																	"properties": {
																		"type": {
																			"type": "string",
																			"const": "custom_agent_template_picker",
																			"description": "Always `custom_agent_template_picker`"
																		}
																	},
																	"additionalProperties": false,
																	"required": ["type"]
																}
															]
														}
													},
													"pending_user_actions": {
														"type": "array",
														"items": {
															"type": "object",
															"properties": {
																"id": {
																	"$ref": "#/components/schemas/idResponse"
																},
																"type": {
																	"type": "string",
																	"const": "tool_confirmation",
																	"description": "Always `tool_confirmation`"
																},
																"title": {
																	"type": "string"
																},
																"requirements": {
																	"type": "array",
																	"items": {
																		"oneOf": [
																			{
																				"type": "object",
																				"properties": {
																					"type": {
																						"type": "string",
																						"const": "general",
																						"description": "Always `general`"
																					}
																				},
																				"additionalProperties": false,
																				"required": ["type"]
																			},
																			{
																				"type": "object",
																				"properties": {
																					"type": {
																						"type": "string",
																						"const": "manage_workers",
																						"description": "Always `manage_workers`"
																					}
																				},
																				"additionalProperties": false,
																				"required": ["type"]
																			},
																			{
																				"type": "object",
																				"properties": {
																					"type": {
																						"type": "string",
																						"const": "url_safety",
																						"description": "Always `url_safety`"
																					},
																					"urls": {
																						"type": "array",
																						"items": {
																							"type": "string"
																						}
																					},
																					"required_by_workspace_policy": {
																						"type": "boolean"
																					}
																				},
																				"additionalProperties": false,
																				"required": ["type", "urls"]
																			},
																			{
																				"type": "object",
																				"properties": {
																					"type": {
																						"type": "string",
																						"const": "permission_escalation",
																						"description": "Always `permission_escalation`"
																					},
																					"destination_title": {
																						"type": "string"
																					},
																					"source_titles": {
																						"type": "array",
																						"items": {
																							"type": "string"
																						}
																					}
																				},
																				"additionalProperties": false,
																				"required": ["type"]
																			},
																			{
																				"type": "object",
																				"properties": {
																					"type": {
																						"type": "string",
																						"const": "delete_content",
																						"description": "Always `delete_content`"
																					},
																					"page_count": {
																						"type": "integer",
																						"minimum": 0
																					},
																					"database_count": {
																						"type": "integer",
																						"minimum": 0
																					},
																					"meeting_notes_block_count": {
																						"type": "integer",
																						"minimum": 0
																					}
																				},
																				"additionalProperties": false,
																				"required": [
																					"type",
																					"page_count",
																					"database_count"
																				]
																			},
																			{
																				"type": "object",
																				"properties": {
																					"type": {
																						"type": "string",
																						"const": "connect_integration",
																						"description": "Always `connect_integration`"
																					},
																					"integration_type": {
																						"type": "string"
																					},
																					"integration_name": {
																						"type": "string"
																					},
																					"handoff_url": {
																						"type": "string"
																					}
																				},
																				"additionalProperties": false,
																				"required": [
																					"type",
																					"integration_type",
																					"integration_name",
																					"handoff_url"
																				]
																			},
																			{
																				"type": "object",
																				"properties": {
																					"type": {
																						"type": "string",
																						"const": "admin_mode",
																						"description": "Always `admin_mode`"
																					},
																					"explanation": {
																						"type": "string"
																					}
																				},
																				"additionalProperties": false,
																				"required": ["type"]
																			}
																		],
																		"title": "Pending user action requirement"
																	}
																},
																"options": {
																	"type": "array",
																	"items": {
																		"oneOf": [
																			{
																				"type": "object",
																				"properties": {
																					"id": {
																						"type": "string",
																						"const": "approve",
																						"description": "Always `approve`"
																					},
																					"label": {
																						"type": "string"
																					}
																				},
																				"additionalProperties": false,
																				"required": ["id", "label"]
																			},
																			{
																				"type": "object",
																				"properties": {
																					"id": {
																						"type": "string",
																						"const": "reject",
																						"description": "Always `reject`"
																					},
																					"label": {
																						"type": "string"
																					}
																				},
																				"additionalProperties": false,
																				"required": ["id", "label"]
																			},
																			{
																				"type": "object",
																				"properties": {
																					"id": {
																						"type": "string",
																						"const": "use_connection",
																						"description": "Always `use_connection`"
																					},
																					"label": {
																						"type": "string"
																					},
																					"input": {
																						"type": "object",
																						"properties": {
																							"type": {
																								"type": "string",
																								"const": "connection_id",
																								"description": "Always `connection_id`"
																							},
																							"required": {
																								"type": "boolean",
																								"const": true,
																								"description": "Always `true`"
																							}
																						},
																						"additionalProperties": false,
																						"required": ["type", "required"]
																					}
																				},
																				"additionalProperties": false,
																				"required": ["id", "label", "input"]
																			}
																		],
																		"title": "Pending user action option"
																	}
																}
															},
															"additionalProperties": false,
															"required": [
																"id",
																"type",
																"title",
																"requirements",
																"options"
															]
														}
													}
												},
												"additionalProperties": false,
												"required": [
													"object",
													"id",
													"role",
													"content",
													"created_time",
													"parent"
												]
											},
											"maxItems": 100
										},
										"has_more": {
											"type": "boolean"
										},
										"next_cursor": {
											"oneOf": [
												{
													"title": "Cursor",
													"type": "string"
												},
												{
													"type": "null"
												}
											]
										}
									},
									"additionalProperties": false,
									"required": [
										"object",
										"type",
										"results",
										"has_more",
										"next_cursor"
									]
								}
							}
						}
					},
					"400": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_400"
								}
							}
						}
					},
					"401": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_401"
								}
							}
						}
					},
					"403": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_403"
								}
							}
						}
					},
					"404": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_404"
								}
							}
						}
					},
					"406": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_406"
								}
							}
						}
					},
					"409": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_409"
								}
							}
						}
					},
					"429": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_429"
								}
							}
						}
					},
					"500": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_500"
								}
							}
						}
					},
					"503": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_503"
								}
							}
						}
					},
					"504": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_504"
								}
							}
						}
					},
					"529": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_529"
								}
							}
						}
					}
				},
				"x-notion-docs-ref": "https://developers.notion.com/reference/unreleased/query-thread-messages"
			}
		},
		"/v1/agents/{agent_id}/threads/query": {
			"post": {
				"summary": "Query threads",
				"operationId": "query-threads",
				"tags": ["Internal"],
				"x-hidden": true,
				"x-noIndex": true,
				"parameters": [
					{
						"name": "agent_id",
						"in": "path",
						"required": true,
						"schema": {
							"oneOf": [
								{
									"$ref": "#/components/schemas/idRequest"
								},
								{
									"type": "string",
									"enum": ["notion_ai", "33333333-3333-3333-3333-333333333333"],
									"description": "One of: `notion_ai`, `33333333-3333-3333-3333-333333333333`"
								}
							],
							"description": "The ID of the agent. Use a UUID for custom agents or `notion_ai` for Notion Agent (personal agent); the reserved UUID `33333333-3333-3333-3333-333333333333` remains supported for backward compatibility."
						}
					},
					{
						"$ref": "#/components/parameters/notionVersion"
					}
				],
				"requestBody": {
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"type": "object",
								"properties": {
									"query": {
										"type": "string",
										"description": "Search thread titles."
									},
									"filter": {
										"type": "object",
										"properties": {
											"id": {
												"$ref": "#/components/schemas/idRequest",
												"description": "Filter threads by ID (exact match)."
											},
											"status": {
												"type": "array",
												"items": {
													"type": "string",
													"enum": [
														"all",
														"pending",
														"in_progress",
														"failed",
														"success"
													],
													"description": "One of: `all`, `pending`, `in_progress`, `failed`, `success`"
												},
												"maxItems": 100,
												"minItems": 1,
												"description": "Filter by one or more activity statuses. `all` cannot be combined with another status."
											},
											"created_by": {
												"type": "array",
												"items": {
													"oneOf": [
														{
															"$ref": "#/components/schemas/idRequest"
														},
														{
															"type": "string",
															"const": "me",
															"description": "Always `me`"
														}
													]
												},
												"maxItems": 100,
												"minItems": 1,
												"description": "Filter by creator IDs or \"me\"."
											},
											"last_used_by": {
												"type": "array",
												"items": {
													"oneOf": [
														{
															"$ref": "#/components/schemas/idRequest"
														},
														{
															"type": "string",
															"const": "me",
															"description": "Always `me`"
														}
													]
												},
												"maxItems": 100,
												"minItems": 1,
												"description": "Filter by last-used actor IDs or \"me\"."
											},
											"message_time": {
												"type": "object",
												"properties": {
													"start": {
														"type": "string",
														"format": "date-time",
														"description": "Inclusive start of the message time window. Defaults to the Unix epoch."
													},
													"end": {
														"type": "string",
														"format": "date-time",
														"description": "Exclusive end of the message time window. Defaults to the current time."
													}
												},
												"additionalProperties": false,
												"description": "Filter to threads containing a public-facing message in the requested time window."
											}
										},
										"additionalProperties": false,
										"description": "Thread filters."
									},
									"sorts": {
										"type": "array",
										"items": {
											"type": "object",
											"properties": {
												"timestamp": {
													"type": "string",
													"enum": ["created_time", "last_used_time"],
													"description": "Timestamp used to sort threads."
												},
												"direction": {
													"type": "string",
													"enum": ["ascending", "descending"],
													"description": "Sort direction."
												}
											},
											"additionalProperties": false,
											"required": ["timestamp", "direction"]
										},
										"maxItems": 2,
										"minItems": 1,
										"description": "Ordered sort precedence. Defaults to last_used_time descending."
									},
									"start_cursor": {
										"type": "string",
										"description": "Opaque continuation cursor from the previous page."
									},
									"page_size": {
										"type": "integer",
										"minimum": 1,
										"maximum": 100,
										"description": "Number of threads to return. Maximum: 100."
									}
								},
								"additionalProperties": false
							}
						}
					}
				},
				"responses": {
					"200": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"object": {
											"type": "string",
											"const": "list",
											"description": "Always `list`"
										},
										"type": {
											"type": "string",
											"const": "thread",
											"description": "Always `thread`"
										},
										"results": {
											"type": "array",
											"items": {
												"type": "object",
												"properties": {
													"object": {
														"type": "string",
														"const": "thread",
														"description": "Always `thread`"
													},
													"id": {
														"$ref": "#/components/schemas/idResponse"
													},
													"title": {
														"type": "string"
													},
													"status": {
														"type": "string",
														"enum": [
															"pending",
															"requires_action",
															"completed",
															"canceled",
															"failed"
														],
														"description": "One of: `pending`, `requires_action`, `completed`, `canceled`, `failed`"
													},
													"created_time": {
														"type": "string",
														"format": "date-time",
														"description": "Date and time when this thread was created."
													},
													"last_edited_time": {
														"type": "string",
														"format": "date-time",
														"description": "Date and time when this thread was last updated."
													},
													"created_by": {
														"type": "object",
														"properties": {
															"id": {
																"$ref": "#/components/schemas/idResponse",
																"description": "The ID of the actor that created this thread: a bot for an integration-created thread, a user for one created in the Notion app."
															},
															"type": {
																"type": "string",
																"enum": ["bot", "user"],
																"description": "The creator type. Threads a caller can see because it has access to the agent, such as a trigger's runs or a teammate's chats, may be created by either a bot or a user."
															}
														},
														"additionalProperties": false,
														"required": ["id", "type"]
													},
													"agent_version": {
														"oneOf": [
															{
																"type": "object",
																"properties": {
																	"id": {
																		"$ref": "#/components/schemas/idResponse",
																		"description": "The ID of the published artifact."
																	},
																	"number": {
																		"type": "number",
																		"description": "The version number."
																	},
																	"published_at": {
																		"type": "string",
																		"description": "The ISO 8601 timestamp when this version was published."
																	}
																},
																"additionalProperties": false,
																"required": ["id", "number", "published_at"]
															},
															{
																"type": "null"
															}
														]
													},
													"models": {
														"oneOf": [
															{
																"type": "object",
																"properties": {
																	"type": {
																		"type": "string",
																		"const": "auto",
																		"description": "Always `auto`"
																	}
																},
																"additionalProperties": false,
																"required": ["type"]
															},
															{
																"type": "object",
																"properties": {
																	"type": {
																		"type": "string",
																		"const": "pinned",
																		"description": "Always `pinned`"
																	},
																	"ids": {
																		"type": "array",
																		"items": {
																			"oneOf": [
																				{
																					"type": "string"
																				},
																				{
																					"type": "null"
																				}
																			]
																		},
																		"description": "The public model this thread is pinned to (e.g. \"claude-sonnet-5\"), with null for a pre-release / early-access model. Empty when the thread has no model recorded yet. Reflects the thread's configuration at creation, so a model changed mid-conversation is not reflected here."
																	}
																},
																"additionalProperties": false,
																"required": ["type", "ids"]
															}
														]
													},
													"error": {
														"type": "string"
													},
													"trigger_type": {
														"type": "string",
														"description": "How this thread started: the type of the trigger that ran it, or \"chat\"."
													},
													"type_labels": {
														"oneOf": [
															{
																"type": "array",
																"items": {
																	"type": "string"
																}
															},
															{
																"type": "null"
															}
														],
														"description": "Labels describing how the thread ran (triggered, chat, setup). Null when the caller lacks edit access to the agent."
													},
													"chat_user_emails": {
														"oneOf": [
															{
																"type": "array",
																"items": {
																	"type": "string"
																}
															},
															{
																"type": "null"
															}
														],
														"description": "Emails of the users who participated in this thread. Null when the caller lacks edit access to the agent."
													},
													"tool_types": {
														"oneOf": [
															{
																"type": "array",
																"items": {
																	"type": "string"
																}
															},
															{
																"type": "null"
															}
														],
														"description": "Types of tool this thread called. Null when the caller lacks edit access to the agent."
													},
													"tool_call_count": {
														"oneOf": [
															{
																"type": "number"
															},
															{
																"type": "null"
															}
														],
														"description": "Number of tool calls in this thread. Null when the caller lacks edit access to the agent."
													},
													"credits_used": {
														"oneOf": [
															{
																"type": "number"
															},
															{
																"type": "null"
															}
														],
														"description": "Premium AI credits this thread consumed. Null when the caller lacks edit access to the agent. Reported with at most two decimal places, rounded down."
													},
													"runs_completed": {
														"oneOf": [
															{
																"type": "number"
															},
															{
																"type": "null"
															}
														],
														"description": "Runs completed in this thread. Null when the caller lacks edit access to the agent, or when the thread predates run tracking."
													},
													"pending_user_actions": {
														"type": "array",
														"items": {
															"type": "object",
															"properties": {
																"id": {
																	"$ref": "#/components/schemas/idResponse"
																},
																"type": {
																	"type": "string",
																	"const": "tool_confirmation",
																	"description": "Always `tool_confirmation`"
																},
																"title": {
																	"type": "string"
																},
																"requirements": {
																	"type": "array",
																	"items": {
																		"oneOf": [
																			{
																				"type": "object",
																				"properties": {
																					"type": {
																						"type": "string",
																						"const": "general",
																						"description": "Always `general`"
																					}
																				},
																				"additionalProperties": false,
																				"required": ["type"]
																			},
																			{
																				"type": "object",
																				"properties": {
																					"type": {
																						"type": "string",
																						"const": "manage_workers",
																						"description": "Always `manage_workers`"
																					}
																				},
																				"additionalProperties": false,
																				"required": ["type"]
																			},
																			{
																				"type": "object",
																				"properties": {
																					"type": {
																						"type": "string",
																						"const": "url_safety",
																						"description": "Always `url_safety`"
																					},
																					"urls": {
																						"type": "array",
																						"items": {
																							"type": "string"
																						}
																					},
																					"required_by_workspace_policy": {
																						"type": "boolean"
																					}
																				},
																				"additionalProperties": false,
																				"required": ["type", "urls"]
																			},
																			{
																				"type": "object",
																				"properties": {
																					"type": {
																						"type": "string",
																						"const": "permission_escalation",
																						"description": "Always `permission_escalation`"
																					},
																					"destination_title": {
																						"type": "string"
																					},
																					"source_titles": {
																						"type": "array",
																						"items": {
																							"type": "string"
																						}
																					}
																				},
																				"additionalProperties": false,
																				"required": ["type"]
																			},
																			{
																				"type": "object",
																				"properties": {
																					"type": {
																						"type": "string",
																						"const": "delete_content",
																						"description": "Always `delete_content`"
																					},
																					"page_count": {
																						"type": "integer",
																						"minimum": 0
																					},
																					"database_count": {
																						"type": "integer",
																						"minimum": 0
																					},
																					"meeting_notes_block_count": {
																						"type": "integer",
																						"minimum": 0
																					}
																				},
																				"additionalProperties": false,
																				"required": [
																					"type",
																					"page_count",
																					"database_count"
																				]
																			},
																			{
																				"type": "object",
																				"properties": {
																					"type": {
																						"type": "string",
																						"const": "connect_integration",
																						"description": "Always `connect_integration`"
																					},
																					"integration_type": {
																						"type": "string"
																					},
																					"integration_name": {
																						"type": "string"
																					},
																					"handoff_url": {
																						"type": "string"
																					}
																				},
																				"additionalProperties": false,
																				"required": [
																					"type",
																					"integration_type",
																					"integration_name",
																					"handoff_url"
																				]
																			},
																			{
																				"type": "object",
																				"properties": {
																					"type": {
																						"type": "string",
																						"const": "admin_mode",
																						"description": "Always `admin_mode`"
																					},
																					"explanation": {
																						"type": "string"
																					}
																				},
																				"additionalProperties": false,
																				"required": ["type"]
																			}
																		],
																		"title": "Pending user action requirement"
																	}
																},
																"options": {
																	"type": "array",
																	"items": {
																		"oneOf": [
																			{
																				"type": "object",
																				"properties": {
																					"id": {
																						"type": "string",
																						"const": "approve",
																						"description": "Always `approve`"
																					},
																					"label": {
																						"type": "string"
																					}
																				},
																				"additionalProperties": false,
																				"required": ["id", "label"]
																			},
																			{
																				"type": "object",
																				"properties": {
																					"id": {
																						"type": "string",
																						"const": "reject",
																						"description": "Always `reject`"
																					},
																					"label": {
																						"type": "string"
																					}
																				},
																				"additionalProperties": false,
																				"required": ["id", "label"]
																			},
																			{
																				"type": "object",
																				"properties": {
																					"id": {
																						"type": "string",
																						"const": "use_connection",
																						"description": "Always `use_connection`"
																					},
																					"label": {
																						"type": "string"
																					},
																					"input": {
																						"type": "object",
																						"properties": {
																							"type": {
																								"type": "string",
																								"const": "connection_id",
																								"description": "Always `connection_id`"
																							},
																							"required": {
																								"type": "boolean",
																								"const": true,
																								"description": "Always `true`"
																							}
																						},
																						"additionalProperties": false,
																						"required": ["type", "required"]
																					}
																				},
																				"additionalProperties": false,
																				"required": ["id", "label", "input"]
																			}
																		],
																		"title": "Pending user action option"
																	}
																}
															},
															"additionalProperties": false,
															"required": [
																"id",
																"type",
																"title",
																"requirements",
																"options"
															]
														}
													}
												},
												"additionalProperties": false,
												"required": [
													"object",
													"id",
													"title",
													"status",
													"created_time",
													"last_edited_time",
													"created_by",
													"agent_version",
													"models"
												]
											},
											"maxItems": 100
										},
										"has_more": {
											"type": "boolean"
										},
										"next_cursor": {
											"oneOf": [
												{
													"title": "Cursor",
													"type": "string"
												},
												{
													"type": "null"
												}
											]
										}
									},
									"additionalProperties": false,
									"required": [
										"object",
										"type",
										"results",
										"has_more",
										"next_cursor"
									]
								}
							}
						}
					},
					"400": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_400"
								}
							}
						}
					},
					"401": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_401"
								}
							}
						}
					},
					"403": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_403"
								}
							}
						}
					},
					"404": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_404"
								}
							}
						}
					},
					"406": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_406"
								}
							}
						}
					},
					"409": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_409"
								}
							}
						}
					},
					"429": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_429"
								}
							}
						}
					},
					"500": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_500"
								}
							}
						}
					},
					"503": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_503"
								}
							}
						}
					},
					"504": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_504"
								}
							}
						}
					},
					"529": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_529"
								}
							}
						}
					}
				},
				"x-notion-docs-ref": "https://developers.notion.com/reference/unreleased/query-threads"
			}
		},
		"/v1/groups/{group_id}/members/users/{user_id}": {
			"delete": {
				"summary": "Remove a group member",
				"operationId": "remove-group-member",
				"tags": ["Internal"],
				"x-hidden": true,
				"x-noIndex": true,
				"parameters": [
					{
						"name": "group_id",
						"in": "path",
						"required": true,
						"schema": {
							"$ref": "#/components/schemas/idRequest",
							"description": "The ID of the group."
						}
					},
					{
						"name": "user_id",
						"in": "path",
						"required": true,
						"schema": {
							"$ref": "#/components/schemas/idRequest",
							"description": "The ID of the user."
						}
					},
					{
						"$ref": "#/components/parameters/notionVersion"
					}
				],
				"responses": {
					"200": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/groupMembershipObjectResponse"
								}
							}
						}
					},
					"400": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_400"
								}
							}
						}
					},
					"401": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_401"
								}
							}
						}
					},
					"403": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_403"
								}
							}
						}
					},
					"404": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_404"
								}
							}
						}
					},
					"406": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_406"
								}
							}
						}
					},
					"409": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_409"
								}
							}
						}
					},
					"429": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_429"
								}
							}
						}
					},
					"500": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_500"
								}
							}
						}
					},
					"503": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_503"
								}
							}
						}
					},
					"504": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_504"
								}
							}
						}
					},
					"529": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_529"
								}
							}
						}
					}
				}
			},
			"patch": {
				"summary": "Update a group member",
				"operationId": "update-group-member",
				"tags": ["Internal"],
				"x-hidden": true,
				"x-noIndex": true,
				"parameters": [
					{
						"name": "group_id",
						"in": "path",
						"required": true,
						"schema": {
							"$ref": "#/components/schemas/idRequest",
							"description": "The ID of the group."
						}
					},
					{
						"name": "user_id",
						"in": "path",
						"required": true,
						"schema": {
							"$ref": "#/components/schemas/idRequest",
							"description": "The ID of the user."
						}
					},
					{
						"$ref": "#/components/parameters/notionVersion"
					}
				],
				"requestBody": {
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"type": "object",
								"properties": {
									"role": {
										"type": "string",
										"enum": ["owner", "member"],
										"description": "The user's new role in the group."
									}
								},
								"required": ["role"]
							}
						}
					}
				},
				"responses": {
					"200": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/groupMembershipObjectResponse"
								}
							}
						}
					},
					"400": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_400"
								}
							}
						}
					},
					"401": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_401"
								}
							}
						}
					},
					"403": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_403"
								}
							}
						}
					},
					"404": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_404"
								}
							}
						}
					},
					"406": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_406"
								}
							}
						}
					},
					"409": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_409"
								}
							}
						}
					},
					"429": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_429"
								}
							}
						}
					},
					"500": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_500"
								}
							}
						}
					},
					"503": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_503"
								}
							}
						}
					},
					"504": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_504"
								}
							}
						}
					},
					"529": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_529"
								}
							}
						}
					}
				}
			}
		},
		"/v1/pages/{page_id}/remove_guests": {
			"post": {
				"summary": "Remove guests from a page",
				"operationId": "remove-page-guest",
				"tags": ["Internal"],
				"x-hidden": true,
				"x-noIndex": true,
				"parameters": [
					{
						"name": "page_id",
						"in": "path",
						"required": true,
						"schema": {
							"$ref": "#/components/schemas/idRequest",
							"description": "The ID of the page to remove guests from."
						}
					},
					{
						"$ref": "#/components/parameters/notionVersion"
					}
				],
				"requestBody": {
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"type": "object",
								"properties": {},
								"additionalProperties": false
							}
						}
					}
				},
				"responses": {
					"200": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"oneOf": [
										{
											"$ref": "#/components/schemas/partialPageObjectResponse"
										},
										{
											"$ref": "#/components/schemas/pageObjectResponse"
										}
									]
								}
							}
						}
					},
					"400": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_400"
								}
							}
						}
					},
					"401": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_401"
								}
							}
						}
					},
					"403": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_403"
								}
							}
						}
					},
					"404": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_404"
								}
							}
						}
					},
					"406": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_406"
								}
							}
						}
					},
					"409": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_409"
								}
							}
						}
					},
					"429": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_429"
								}
							}
						}
					},
					"500": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_500"
								}
							}
						}
					},
					"503": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_503"
								}
							}
						}
					},
					"504": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_504"
								}
							}
						}
					},
					"529": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_529"
								}
							}
						}
					}
				}
			}
		},
		"/v1/tools/run/internal": {
			"post": {
				"summary": "Run an internal tool",
				"operationId": "run-internal-tool",
				"tags": ["Internal"],
				"x-hidden": true,
				"x-noIndex": true,
				"parameters": [
					{
						"$ref": "#/components/parameters/notionVersion"
					}
				],
				"requestBody": {
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"type": "object",
								"properties": {
									"connection": {
										"type": "string",
										"minLength": 1,
										"description": "Stable connection ID returned by the connections endpoint."
									},
									"action": {
										"type": "string",
										"minLength": 1,
										"description": "Action name returned for the selected connection."
									},
									"args": {
										"type": "object",
										"additionalProperties": {},
										"description": "Arguments passed to the selected connection action."
									}
								},
								"required": ["connection", "action"]
							}
						}
					}
				},
				"responses": {
					"200": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"result": {
											"description": "The connection action result."
										}
									},
									"additionalProperties": false,
									"required": ["result"]
								}
							}
						}
					},
					"400": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_400"
								}
							}
						}
					},
					"401": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_401"
								}
							}
						}
					},
					"403": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_403"
								}
							}
						}
					},
					"404": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_404"
								}
							}
						}
					},
					"406": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_406"
								}
							}
						}
					},
					"409": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_409"
								}
							}
						}
					},
					"429": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_429"
								}
							}
						}
					},
					"500": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_500"
								}
							}
						}
					},
					"503": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_503"
								}
							}
						}
					},
					"504": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_504"
								}
							}
						}
					},
					"529": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_529"
								}
							}
						}
					}
				}
			}
		},
		"/v1/tools/run": {
			"post": {
				"summary": "Run an AI tool",
				"operationId": "run-tool",
				"tags": ["Internal"],
				"x-hidden": true,
				"x-noIndex": true,
				"parameters": [
					{
						"$ref": "#/components/parameters/notionVersion"
					}
				],
				"requestBody": {
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"oneOf": [
									{
										"type": "object",
										"properties": {
											"type": {
												"type": "string",
												"const": "search",
												"description": "The name of the tool to run."
											},
											"search": {
												"type": "object",
												"properties": {
													"query": {
														"type": "string",
														"description": "Short, specific keywords for Notion content search. For user search, enter a name or email address. Provide a non-empty query unless intentionally browsing with filters or a non-relevance sort."
													},
													"query_type": {
														"type": "string",
														"enum": ["internal", "user"],
														"description": "Specify type of the query as either \"internal\" or \"user\". Always include this input if performing\n\"user\" search."
													},
													"data_source_url": {
														"type": "string",
														"description": "Optionally restrict keyword search to a data source URL returned in a <data-source> tag."
													},
													"page_url": {
														"type": "string",
														"description": "Optionally restrict keyword search to a page and its descendants. Accepts a Notion page URL or ID."
													},
													"teamspace_id": {
														"type": "string",
														"description": "Optionally, provide the ID of a teamspace to restrict search results to. This will perform a search\nover content within the specified teamspace only. Accepts the teamspace ID (UUIDv4) with or\nwithout dashes."
													},
													"filters": {
														"type": "object",
														"properties": {
															"created_date_range": {
																"type": "object",
																"properties": {
																	"start_date": {
																		"type": "string",
																		"format": "date",
																		"description": "The start date of the date range as an ISO 8601 date string, if any."
																	},
																	"end_date": {
																		"type": "string",
																		"format": "date",
																		"description": "The end date of the date range as an ISO 8601 date string, if any."
																	}
																},
																"additionalProperties": false,
																"description": "Optional filter to only produce search results created within the specified date range."
															},
															"created_by_user_ids": {
																"type": "array",
																"items": {
																	"type": "string"
																},
																"maxItems": 100,
																"description": "Optional filter to only produce search results created by the Notion users that have the specified user IDs. Use \"me\" for the connected user."
															},
															"edited_by_user_ids": {
																"type": "array",
																"items": {
																	"type": "string"
																},
																"maxItems": 100,
																"description": "Optional filter to only produce search results edited by the Notion users that have the specified user IDs. Use \"me\" for the connected user. Available on the Business plan."
															},
															"last_edited_date_range": {
																"type": "object",
																"properties": {
																	"start_date": {
																		"type": "string",
																		"format": "date",
																		"description": "The start date of the date range as an ISO 8601 date string, if any."
																	},
																	"end_date": {
																		"type": "string",
																		"format": "date",
																		"description": "The end date of the date range as an ISO 8601 date string, if any."
																	}
																},
																"additionalProperties": false,
																"description": "Optional filter to only produce search results last edited within the specified date range. Available on the Business plan."
															},
															"teamspace_ids": {
																"type": "array",
																"items": {
																	"$ref": "#/components/schemas/idRequest"
																},
																"maxItems": 100,
																"description": "Optional filter to only produce search results inside one of the specified teamspaces. Selecting more than one teamspace is available on the Business plan; use teamspace_id for one teamspace on other plans."
															},
															"title_only": {
																"type": "boolean",
																"description": "When true, match the query only against page and database titles instead of page content. Available on the Business plan."
															},
															"content_status": {
																"type": "string",
																"enum": [
																	"all_with_archived",
																	"all_without_archived",
																	"verified_only",
																	"archived_only"
																],
																"description": "Which pages to include by status. Omit for the default live pages. Supplying this field, even with the default value, requires Business access."
															}
														},
														"description": "Optional exact filters for Notion workspace search. Omit unless required by the request. Keep filter fields nested here; do not send them at the top level. Some filters require Business access."
													},
													"sort": {
														"type": "string",
														"enum": ["relevance", "last_edited", "created"],
														"description": "Result ordering for Notion workspace search. Omit for the default \"relevance\" ordering. \"last_edited\" and \"created\" require Business access."
													},
													"page_size": {
														"type": "integer",
														"minimum": 1,
														"maximum": 50,
														"description": "Maximum number of results to return (default 10). Lower values reduce response size."
													},
													"max_highlight_length": {
														"type": "integer",
														"minimum": 0,
														"maximum": 500,
														"description": "Maximum character length for result highlights (default 200). Set to 0 to omit highlights entirely."
													}
												},
												"required": ["query"],
												"description": "The parameters for the search tool. Before the first content search for this connection, call get_tool_access with {} unless its current access result is already in context. Choose the content-search tool by current_tool_access.ai_search.status, not by query wording:\n- If the status is \"available\", use ai_search for every keyword, page-title, project-name, or natural-language content search.\n- If access discovery reports that AI search is not available to this connection, use search with short, specific keywords. Missing access information is not a denial; call get_tool_access first.\n\nStart with a non-empty query and omit optional parameters unless needed. Do not add filters or sorting just to fill in defaults. Business or Enterprise is required for filters.edited_by_user_ids, filters.last_edited_date_range, filters.title_only=true, filters.content_status, more than one distinct teamspace across teamspace_id and filters.teamspace_ids, and sort other than relevance. Check current_tool_access.search.restricted_parameters; unavailable options are dropped with a notice and results may be broader. Keep filters nested inside \"filters\". Use page_size, not limit. When AI search is available, use ai_search for structured content searches too.\n\nFor user lookup, use ai_search with query_type=\"user\" when AI search is available; otherwise use search with query_type=\"user\". A document about a person is a content search, not a user lookup.\n\n<example description=\"AI search unavailable: find a page by title\">\n{\"query\":\"Q3 roadmap\"}\n</example>\n<example description=\"Find a user on any plan\">\n{\"query\":\"alex@example.com\",\"query_type\":\"user\"}\n</example>"
											}
										},
										"required": ["type", "search"],
										"title": "Search"
									},
									{
										"type": "object",
										"properties": {
											"type": {
												"type": "string",
												"const": "ai_search",
												"description": "The name of the tool to run."
											},
											"ai_search": {
												"type": "object",
												"properties": {
													"query": {
														"type": "string",
														"description": "Exact keywords, a page title, a project name, or a concise natural-language question. Keywords are valid; a question is not required. Preserve distinctive names and identifiers. Prefer one topic per call, ideally under 50 words. Provide a non-empty query unless intentionally browsing Notion with filters or a non-relevance sort."
													},
													"query_type": {
														"type": "string",
														"enum": ["internal", "user"],
														"description": "Omit or use \"internal\" for content search. Use \"user\" to look up a workspace user by name or email."
													},
													"data_source_url": {
														"type": "string",
														"description": "Optionally restrict search to a data source URL returned in a <data-source> tag. Omit when searching the whole workspace."
													},
													"page_url": {
														"type": "string",
														"description": "Optionally restrict search to a page and its descendants. Accepts a Notion page URL or ID. Omit when searching the whole workspace."
													},
													"teamspace_id": {
														"type": "string",
														"description": "Optionally restrict search to a teamspace ID."
													},
													"filters": {
														"type": "object",
														"properties": {
															"created_date_range": {
																"type": "object",
																"properties": {
																	"start_date": {
																		"type": "string",
																		"format": "date",
																		"description": "The start date of the date range as an ISO 8601 date string, if any."
																	},
																	"end_date": {
																		"type": "string",
																		"format": "date",
																		"description": "The end date of the date range as an ISO 8601 date string, if any."
																	}
																},
																"additionalProperties": false,
																"description": "Optional filter to only produce search results created within the specified date range."
															},
															"created_by_user_ids": {
																"type": "array",
																"items": {
																	"type": "string"
																},
																"maxItems": 100,
																"description": "Optional filter to only produce search results created by the Notion users that have the specified user IDs. Use \"me\" for the connected user."
															},
															"edited_by_user_ids": {
																"type": "array",
																"items": {
																	"type": "string"
																},
																"maxItems": 100,
																"description": "Optional filter to only produce search results edited by the Notion users that have the specified user IDs. Use \"me\" for the connected user. Available on the Business plan."
															},
															"last_edited_date_range": {
																"type": "object",
																"properties": {
																	"start_date": {
																		"type": "string",
																		"format": "date",
																		"description": "The start date of the date range as an ISO 8601 date string, if any."
																	},
																	"end_date": {
																		"type": "string",
																		"format": "date",
																		"description": "The end date of the date range as an ISO 8601 date string, if any."
																	}
																},
																"additionalProperties": false,
																"description": "Optional filter to only produce search results last edited within the specified date range. Available on the Business plan."
															},
															"teamspace_ids": {
																"type": "array",
																"items": {
																	"$ref": "#/components/schemas/idRequest"
																},
																"maxItems": 100,
																"description": "Optional filter to only produce search results inside one of the specified teamspaces. Selecting more than one teamspace is available on the Business plan; use teamspace_id for one teamspace on other plans."
															},
															"title_only": {
																"type": "boolean",
																"description": "When true, match the query only against page and database titles instead of page content. Available on the Business plan."
															},
															"content_status": {
																"type": "string",
																"enum": [
																	"all_with_archived",
																	"all_without_archived",
																	"verified_only",
																	"archived_only"
																],
																"description": "Which pages to include by status. Omit for the default live pages. Supplying this field, even with the default value, requires Business access."
															}
														},
														"additionalProperties": false,
														"description": "Optional exact filters for Notion pages and databases. Supplying an effective filter selects Notion-only workspace search so the filter is enforced exactly. Omit for unified search across Notion and connected sources. Keep filter fields nested here. Some filters require Business access."
													},
													"sort": {
														"type": "string",
														"enum": ["relevance", "last_edited", "created"],
														"description": "Omit for the default \"relevance\" ordering. \"last_edited\" and \"created\" select Notion-only workspace search and require Business access."
													},
													"page_size": {
														"type": "integer",
														"minimum": 1,
														"maximum": 50,
														"description": "Maximum number of results to return (default 10)."
													},
													"max_highlight_length": {
														"type": "integer",
														"minimum": 0,
														"maximum": 500,
														"description": "Maximum result highlight length (default 200). Set to 0 to omit highlights."
													}
												},
												"additionalProperties": false,
												"required": ["query"],
												"description": "The parameters for the ai_search tool. Use this tool for every content search when access discovery reports current_tool_access.ai_search.status=\"available\". This includes exact keywords, page titles, project names, and natural-language questions. Choose by the connection's access, not by query wording. If access is not already known, call get_tool_access first. If access discovery reports that AI search is not available, use search instead.\n\nSearch Notion and connected workspace sources available to you, such as Slack, Mail, and Calendar. Keywords are valid; a question is not required. Preserve distinctive names and identifiers. Prefer one topic per call, ideally under 50 words.\n\nStart with {\"query\":\"...\"} and omit optional parameters unless needed. For user lookup, set query_type=\"user\" and provide a name or email. Omit content filters and sort for user lookup. Do not send content_search_mode. Exact filters, non-relevance sorting, and filter-only browsing are supported by this tool and return Notion-only workspace results with supported constraints applied. Omit these options to search Notion and connected sources together. Filter and sort access is separate from AI access: check current_tool_access.ai_search.restricted_parameters. Unavailable options are dropped with a notice. If AI access is unavailable, this tool falls back to keyword search in Notion only and reports that connected sources were not searched. User name or email lookup uses this tool with query_type=\"user\".\n\n<example description=\"AI search available: find a page by title\">\n{\"query\":\"Q3 roadmap\"}\n</example>\n<example description=\"AI search available: find an exact identifier\">\n{\"query\":\"ACME-123\"}\n</example>\n<example description=\"AI search available: answer a question\">\n{\"query\":\"Why did we delay the launch?\"}\n</example>\n<example description=\"AI search available: browse Notion pages created in a date range\">\n{\"query\":\"\",\"filters\":{\"created_date_range\":{\"start_date\":\"2026-07-01\",\"end_date\":\"2026-08-01\"}}}\n</example>"
											}
										},
										"required": ["type", "ai_search"],
										"title": "Ai Search"
									},
									{
										"type": "object",
										"properties": {
											"type": {
												"type": "string",
												"const": "connector_search",
												"description": "The name of the tool to run."
											},
											"connector_search": {
												"type": "object",
												"properties": {
													"question": {
														"type": "string",
														"description": "Natural language query. Be specific and descriptive."
													},
													"keywords": {
														"type": "string",
														"description": "Core entities or terms for keyword-based search APIs such as Slack, email, and calendar. Recommended for long questions. Defaults to question when omitted or blank."
													},
													"lookback": {
														"type": "string",
														"description": "Optional time window. Use only \"default\", \"all_time\", a duration matching /^\\d+[dwmy]$/ (for example, \"7d\", \"2w\", \"3m\", or \"1y\"), or a date in \"YYYY-MM-DD\" format. Do not use natural-language durations or combine units."
													},
													"sources": {
														"type": "array",
														"items": {
															"type": "string",
															"minLength": 1,
															"maxLength": 64
														},
														"maxItems": 32,
														"uniqueItems": true,
														"description": "Optionally search only these connected sources, such as [\"slack\"] or [\"google-drive\", \"github\"]. Valid names: slack, google-drive, github, jira, microsoft-teams, sharepoint, gmail, linear, outlook, notion-mail, google-calendar, notion-calendar, salesforce, asana, box, confluence. Uses the names results report in searchedSources. Omit to search every connected source. Fewer sources return sooner. Unknown names and sources unavailable for this search are skipped with a warning; if no valid name is left, every connected source is searched. Notion is not a source here; use search for Notion content."
													}
												},
												"additionalProperties": false,
												"required": ["question"],
												"description": "The parameters for the connector_search tool. Search connected workspace sources such as Slack, Google Drive, GitHub, mail, and calendar. Connected-source results are final: don't pass their id or url to fetch, which can't open them. Use the title and snippet, and cite the url. Does not search Notion pages or databases; use search for those. On the first search for an information need, call this tool in parallel with search, unless the user names a source, the request is a user lookup, or the request is about Notion pages or databases themselves. Decisions, status updates, and discussions often live in connected sources. Put the full question in question and distinctive names and terms in keywords. To search only some sources, pass sources. Results list the sources searched and any source that failed or timed out."
											}
										},
										"required": ["type", "connector_search"],
										"title": "Connector Search"
									},
									{
										"type": "object",
										"properties": {
											"type": {
												"type": "string",
												"const": "memory_search",
												"description": "The name of the tool to run."
											},
											"memory_search": {
												"type": "object",
												"properties": {
													"query": {
														"type": "string",
														"minLength": 1,
														"maxLength": 500,
														"pattern": "\\S",
														"description": "Words or a short phrase to find in personal memories."
													},
													"limit": {
														"type": "integer",
														"minimum": 1,
														"maximum": 50,
														"description": "Maximum number of memories to return. Defaults to 10 and cannot exceed 50."
													}
												},
												"additionalProperties": false,
												"required": ["query"],
												"description": "The parameters for the memory_search tool. Search memories that the user's connected agents saved in earlier sessions: context, preferences, corrections, and decisions. Returns the best matches, not every memory. To list, count, or filter memories, fetch id \"memory\" and run query-data-sources on its data source. The first time you use memory in a conversation, whether searching or saving, read notion://docs/memory once."
											}
										},
										"required": ["type", "memory_search"],
										"title": "Memory Search"
									},
									{
										"type": "object",
										"properties": {
											"type": {
												"type": "string",
												"const": "get_tool_access",
												"description": "The name of the tool to run."
											},
											"get_tool_access": {
												"type": "object",
												"properties": {
													"tool_names": {
														"type": "array",
														"items": {
															"type": "string",
															"minLength": 1,
															"maxLength": 100
														},
														"maxItems": 100,
														"description": "Optional RunTool names to include, such as search and ai_search. Omit to return all tools visible to this connection. Unknown or unexposed names are omitted. An empty list returns an empty map."
													}
												},
												"additionalProperties": false,
												"description": "The parameters for the get_tool_access tool. Get current tool availability, parameter restrictions, and available upgrade links for this Notion connection. Call with {} to get the full access map before using a conditionally available tool, unless current access is already in context. Reuse this map across tools. When current_tool_access.ai_search.status is \"available\", use ai_search for every content search; otherwise use search. Tool availability and restricted_parameters are independent: omit restricted options even when the tool is available. Optionally pass tool_names, for example [\"search\", \"ai_search\"], to narrow the result. Unknown names and tools not exposed to this connection are omitted. When ai_search is available, legacy search is also omitted from this map; user lookup uses ai_search with query_type=\"user\". This tool does not grant access or change the workspace."
											}
										},
										"required": ["type", "get_tool_access"],
										"title": "Get Tool Access"
									},
									{
										"type": "object",
										"properties": {
											"type": {
												"type": "string",
												"const": "fetch",
												"description": "The name of the tool to run."
											},
											"fetch": {
												"type": "object",
												"properties": {
													"id": {
														"type": "string",
														"description": "The ID or URL of the Notion page, database, or data source to fetch. Supports notion.so URLs, Notion Sites URLs (*.notion.site), raw UUIDs, and data source URLs (collection://...). Pass \"memory\" to fetch the connected user's About page and memory database in this workspace without creating them. Pass a notion://docs/* URI to read that documentation resource. Also accepts an explicit saved view URL (view://...) from a database response. If a database block ID returns a validation error, use the collection:// URL from that error. Example: <example>notion://docs/enhanced-markdown-spec</example>."
													},
													"include_transcript": {
														"type": "boolean",
														"description": "Whether to include meeting note transcripts. Defaults to false. When true, full transcripts are included; when false, a placeholder with the meeting note URL is shown instead."
													},
													"include_discussions": {
														"type": "boolean",
														"description": "Whether to include discussion/comment indicators in the page output. When true, adds a <page-discussions> summary with discussion count, preview snippets, and discussion:// URLs. Use with the get_comments tool to retrieve full discussion content. Defaults to false."
													},
													"include_file_urls": {
														"type": "boolean",
														"description": "Whether to return signed download URLs for uploaded files. Defaults to false. When false, page Markdown cites uploaded files by stable notion-file-block:// references and the response has no references map; call get_file_download_urls with the references when you need those files' contents. When true, the response's references map gives the signed URL for each reference."
													}
												},
												"required": ["id"],
												"description": "The parameters for the fetch tool. Retrieves details about a Notion entity (page, database, data source, or saved database view) by URL or ID.\n\nProvide a URL or ID in `id`. Make multiple calls for multiple entities.\n\nFor pages, use path, verification, edit time, and truncation metadata to assess the source. Treat recency as context, not proof. Report material uncertainty when sources conflict.\n\n\nPages use enhanced Markdown format. For the complete specification,\nread the MCP resource `notion://docs/enhanced-markdown-spec` through your MCP client's resource-reading interface, or call the Notion \"fetch\" tool with this URI if your client does not support reading MCP resources. Do NOT pass this URI to any other URL-fetching tool.\n\nPass a `notion://docs/*` URI as `id` to read that MCP documentation resource.\n\nDatabases return data sources in `<data-source url=\"collection://...\">` tags. Fetch the\ncollection:// URL for its schema and use it with update_data_source or query_data_sources.\nMulti-source databases return more than one data source.\n\nSaved views return filters, sorts, and display settings. To query their rows, use\nquery_data_sources with `mode: \"view\"`.\n\nA null cover or icon means none; an omitted one means unavailable, not absent. Keep a\npage's Markdown icon attribute for edit round trips. File URLs expire; re-fetch to refresh\nthem. Uploaded media blocks use stable `notion-file-block://` sources; keep them when\nediting or copying Markdown. Get download URLs with get_file_download_urls, or set\n`include_file_urls` to true for a `references` map. Before relying on page\ncontent, check `truncated`, `unknown_block_count`, and `unknown_block_ids` for\nomitted subtrees.\n\nSet `include_discussions` to true for discussion counts, markers, previews, and\n`discussion://` URLs that correlate with get_comments.\n\nUse get_tool_access to check tool availability, parameter restrictions, and upgrade links for this connection."
											}
										},
										"required": ["type", "fetch"],
										"title": "Fetch"
									},
									{
										"type": "object",
										"properties": {
											"type": {
												"type": "string",
												"const": "create_attachment",
												"description": "The name of the tool to run."
											},
											"create_attachment": {
												"allOf": [
													{
														"type": "object",
														"properties": {
															"filename": {
																"type": "string",
																"minLength": 1,
																"description": "The filename to create in Notion, including a supported extension such as .html, .md, .pdf, or .png. Required with content and source_url. Omit it with source_file_id; the stored upload already carries a filename."
															},
															"content_type": {
																"type": "string",
																"minLength": 1,
																"maxLength": 255,
																"description": "Optional MIME type, such as text/html or application/pdf. It must match the filename extension; omit it to infer the type from the filename. Omit it with source_file_id; the stored upload already carries a content type."
															}
														}
													},
													{
														"oneOf": [
															{
																"type": "object",
																"properties": {
																	"filename": {
																		"type": "string",
																		"minLength": 1,
																		"description": "The filename to create in Notion, including a supported extension such as .html, .md, .pdf, or .png. Required with content and source_url. Omit it with source_file_id; the stored upload already carries a filename."
																	},
																	"content_type": {
																		"type": "string",
																		"minLength": 1,
																		"maxLength": 255,
																		"description": "Optional MIME type, such as text/html or application/pdf. It must match the filename extension; omit it to infer the type from the filename. Omit it with source_file_id; the stored upload already carries a content type."
																	},
																	"content": {
																		"type": "string",
																		"maxLength": 204800,
																		"description": "The complete UTF-8 text content of the file. Maximum 200 KiB after UTF-8 encoding. Requires filename. Examples: <example><!doctype html><html><body><h1>Report</h1></body></html></example> or <example># Notes\\n\\nHello</example>."
																	}
																},
																"required": ["filename", "content"]
															},
															{
																"type": "object",
																"properties": {
																	"filename": {
																		"type": "string",
																		"minLength": 1,
																		"description": "The filename to create in Notion, including a supported extension such as .html, .md, .pdf, or .png. Required with content and source_url. Omit it with source_file_id; the stored upload already carries a filename."
																	},
																	"content_type": {
																		"type": "string",
																		"minLength": 1,
																		"maxLength": 255,
																		"description": "Optional MIME type, such as text/html or application/pdf. It must match the filename extension; omit it to infer the type from the filename. Omit it with source_file_id; the stored upload already carries a content type."
																	},
																	"source_url": {
																		"type": "string",
																		"minLength": 1,
																		"maxLength": 8192,
																		"description": "A direct, publicly reachable HTTPS URL from which Notion can download the file within one minute. Notion makes a metadata-only HEAD request when supported, then a GET. Redirects, private network addresses, custom request headers, and cookies are not supported. Downloads are limited to 5 MiB for free workspaces and 50 MiB for paid workspaces. Requires filename. Example: <example>https://storage.example.com/report.pdf?signature=...</example>."
																	}
																},
																"required": ["filename", "source_url"]
															},
															{
																"type": "object",
																"properties": {
																	"source_file_id": {
																		"type": "string",
																		"minLength": 1,
																		"maxLength": 36,
																		"description": "The ID of a file upload this exact integration already created. Use create_file_upload when available; otherwise run `ntn files create` or use the Notion File Upload API with this integration's token. Its status must be uploaded. An upload created with a different token is not visible. Example: <example>1e2f3a4b-5c6d-7e8f-9a0b-1c2d3e4f5a6b</example>."
																	}
																},
																"required": ["source_file_id"]
															}
														]
													}
												],
												"title": "Create a Notion attachment",
												"description": "The parameters for the create_attachment tool. Create an attachment and upload it to Notion.\n\nProvide exactly one source:\n- content for small UTF-8 text artifacts such as HTML, Markdown, plain text, CSV, JSON, XML, CSS, YAML, TSV, calendar, GPX, or SVG files.\n- source_url for a direct, publicly reachable HTTPS file URL.\n- source_file_id for a file this exact integration already uploaded. When create_file_upload is available, use it for local files so the upload has the same owner.\n\nFor content and source_url, filename must use a supported extension and content_type must agree with it. Omit content_type to infer it. source_file_id takes neither because the stored upload carries both. For larger files, redirects, or authenticated downloads, upload through the Notion File Upload API with this integration's token and pass source_file_id.\n\nThe response includes a markdown_source value. To place the uploaded file on a page, pass that source to create-pages or update-page. To attach it to a comment, include suggested_markdown on a separate line in create-comment markdown. Unattached uploads remain temporary and are deleted once they expire: content and source_url open a fresh one-hour window, while source_file_id keeps the window that opened when the file was first uploaded, so place that source promptly and upload the file again if it has already expired. \"HTML\", \"HTML block\", \"HTML artifact\", and \"HTML embed\" all mean an HTML file placed with <embed src=\"file-upload://...\"> so Notion renders the sandboxed preview. Never place HTML in a code block or file block. Use <file src=\"file-upload://...\"> for other files.\n\n\nIf availability is not already known for this connection, call get_tool_access with {} before using this tool. Reuse the returned access map across tools; check the status and restricted_parameters."
											}
										},
										"required": ["type", "create_attachment"],
										"title": "Create Attachment"
									},
									{
										"type": "object",
										"properties": {
											"type": {
												"type": "string",
												"const": "create_file_upload",
												"description": "The name of the tool to run."
											},
											"create_file_upload": {
												"type": "object",
												"properties": {
													"filename": {
														"type": "string",
														"minLength": 1,
														"description": "The filename to create in Notion, including a supported extension such as .pdf, .png, or .zip."
													},
													"content_type": {
														"type": "string",
														"minLength": 1,
														"maxLength": 255,
														"description": "Optional MIME type, such as application/pdf or image/png. Prefer omitting it so the type is inferred from the filename: a type that disagrees with the extension is stored as given, and the file then renders as the wrong kind."
													}
												},
												"additionalProperties": false,
												"required": ["filename"],
												"description": "The parameters for the create_file_upload tool. Create a short-lived URL for uploading one local file directly to Notion.\n\nAfter calling this tool, send exactly one multipart/form-data POST request to `upload_url`. Put the file in the `file` form field and include every header returned in `upload_headers`. Files are limited to 20 MiB for this single-part upload flow, and workspace file-size limits still apply.\n\nThe upload response includes `markdown_source` and `suggested_markdown`, which can be passed directly to create-pages or update-page, or included on a separate line in create-comment markdown to attach the file. The URL is short-lived, can upload only the FileUpload created by this call, and runs as this same integration.\n\n<examples>\n1. Prepare an image upload: {\"filename\":\"diagram.png\"}\n2. Prepare a PDF upload with an explicit MIME type: {\"filename\":\"report.pdf\",\"content_type\":\"application/pdf\"}\n</examples>"
											}
										},
										"required": ["type", "create_file_upload"],
										"title": "Create File Upload"
									},
									{
										"type": "object",
										"properties": {
											"type": {
												"type": "string",
												"const": "download_attachment",
												"description": "The name of the tool to run."
											},
											"download_attachment": {
												"type": "object",
												"properties": {
													"file_upload_id": {
														"$ref": "#/components/schemas/idRequest",
														"description": "The FileUpload ID returned by the create-attachment tool."
													}
												},
												"required": ["file_upload_id"],
												"description": "The parameters for the download_attachment tool. Download the contents of a small UTF-8 text attachment created by the Notion MCP `create-attachment` tool.\n\nPass the `file_upload_id` returned by `create-attachment`. The attachment must belong to the requesting integration, have completed uploading, and use a supported text format such as HTML, Markdown, plain text, CSV, JSON, XML, CSS, YAML, TSV, calendar, GPX, or SVG.\n\nThe response contains the complete text in `content` so you can save it locally, edit it, and call `create-attachment` again to upload a new version. Downloads are limited to 200 KiB. This tool does not fetch arbitrary URLs or return binary files. For larger or binary attachments, use the signed file URL returned when reading the containing Notion page.\n\n<examples>\n1. Download a text attachment: {\"file_upload_id\":\"12345678-90ab-cdef-1234-567890abcdef\"}\n</examples>\n\nIf availability is not already known for this connection, call get_tool_access with {} before using this tool. Reuse the returned access map across tools; check the status and restricted_parameters."
											}
										},
										"required": ["type", "download_attachment"],
										"title": "Download Attachment"
									},
									{
										"type": "object",
										"properties": {
											"type": {
												"type": "string",
												"const": "get_file_download_urls",
												"description": "The name of the tool to run."
											},
											"get_file_download_urls": {
												"type": "object",
												"properties": {
													"references": {
														"type": "array",
														"items": {
															"type": "string"
														},
														"maxItems": 25,
														"minItems": 1,
														"uniqueItems": true,
														"description": "Stable notion-file-block:// file references, copied exactly from the Markdown returned by fetch. Up to 25 per call."
													}
												},
												"additionalProperties": false,
												"required": ["references"],
												"description": "The parameters for the get_file_download_urls tool. Get signed download URLs for files that fetch output cites by stable `notion-file-block://` references.\n\nPass up to 25 references exactly as they appear in the page Markdown. Each reference resolves independently: `files` lists the ones that resolved and `unresolved` lists the rest with a reason. The URLs expire after a few minutes; call this tool again for fresh ones. Keep the stable references, not the URLs, when editing or copying page Markdown.\n\n<examples>\n1. Get download URLs: {\"references\":[\"notion-file-block://12345678-90ab-4def-8234-567890abcdef/abcdef12-3456-4890-abcd-ef1234567890?space_id=fedcba98-7654-4321-8fed-cba987654321&name=diagram.png\"]}\n</examples>"
											}
										},
										"required": ["type", "get_file_download_urls"],
										"title": "Get File Download Urls"
									},
									{
										"type": "object",
										"properties": {
											"type": {
												"type": "string",
												"const": "create_pages",
												"description": "The name of the tool to run."
											},
											"create_pages": {
												"type": "object",
												"properties": {
													"pages": {
														"type": "array",
														"items": {
															"type": "object",
															"properties": {
																"properties": {
																	"type": "object",
																	"additionalProperties": {
																		"oneOf": [
																			{
																				"type": "string"
																			},
																			{
																				"type": "number"
																			},
																			{
																				"type": "array",
																				"items": {
																					"type": "string"
																				},
																				"maxItems": 100
																			},
																			{
																				"type": "null"
																			}
																		]
																	},
																	"description": "The properties of the new page, which is a JSON map of property names to SQLite values.\nFor pages in a database, use the SQLite schema definition shown in <database>.\nFor pages outside of a database, the only allowed property is \"title\", which is the title of the page and is automatically shown at the top of the page as a large heading.\n**IMPORTANT**: Some property types require specific formats:\n\t- Date properties: Split into \"date:{property}:start\", \"date:{property}:end\" (optional), and\n\t  \"date:{property}:is_datetime\" (0 or 1)\n\t- Place properties: Split into \"place:{property}:name\", \"place:{property}:address\",\n\t  \"place:{property}:latitude\", \"place:{property}:longitude\", and\n\t  \"place:{property}:google_place_id\" (optional)\n\t- Number properties: Use JavaScript numbers (not strings)\n\t- Checkbox properties: Use \"__YES__\" for checked, \"__NO__\" for unchecked\n\t- Relation properties: Use an array of related page URLs or page IDs, e.g.\n\t  [\"https://www.notion.so/26ab1f9f4c5f80b18d3bd10a6b1d2f4e\", \"26ab1f9f-4c5f-80b1-8d3b-d10a6b1d2f4e\"]\n\t- Person properties: Use an array of user IDs, user or agent URLs, or group references\n\t  copied from fetch output (\"space_permission_group-<UUID>\"). Bare group UUIDs are also supported.\n\t- Files properties: Use a JSON array of file IDs, Notion Folder URLs, and/or <folder> tags\n\t  copied from fetch output. Folders are stored as native Folder references, not ordinary links.\n\n\t**Special property naming**: Properties named \"id\" or \"url\" (case insensitive) must be\n\tprefixed with \"userDefined:\" (e.g., \"userDefined:URL\", \"userDefined:id\")"
																},
																"content": {
																	"type": "string",
																	"description": "The content of the new page, using Notion Markdown. For people and dates, use user and date mentions rather than plain text; notion://docs/enhanced-markdown-spec gives the syntax."
																},
																"template_id": {
																	"type": "string",
																	"description": "The ID of a template to apply to this page. When specified, do not provide 'content' as the template will provide it. Properties can still be set alongside the template. Get template IDs from the <templates> section in the fetch tool results. Template application is asynchronous: the page starts blank and content appears shortly after."
																},
																"icon": {
																	"type": "string",
																	"description": "An emoji character (e.g. \"🚀\"), a custom emoji by name (e.g. \":rocket_ship:\"), a Notion icon identifier as returned by fetch (e.g. \"icons/pizza_blue\"), or an external image URL. Use \"none\" to explicitly set no icon. Omit to leave unchanged. Keep the title free of a duplicate leading emoji because the icon renders separately."
																},
																"cover": {
																	"type": "string",
																	"description": "An external image URL for the page cover. Use \"none\" to explicitly set no cover. Omit to leave unchanged."
																},
																"is_skill": {
																	"type": "boolean",
																	"description": "Set to true only when the user asks for reusable instructions or a repeatable workflow. Do not mark ordinary reference pages, one-time documents, or drafts as skills. Before creating a skill, read the MCP resource `notion://docs/skills` through your MCP client's resource-reading interface. If your client does not support reading MCP resources, call the Notion \"fetch\" tool with this URI instead. Do NOT pass this URI to any other URL-fetching tool. False has the same effect as omitting the field."
																},
																"preserve_internal_links": {
																	"type": "boolean",
																	"description": "Preserve internal Markdown links instead of converting them to native mentions."
																}
															},
															"additionalProperties": false
														},
														"maxItems": 100,
														"description": "The pages to create."
													},
													"creation_mode": {
														"type": "string",
														"const": "draft",
														"description": "If the user explicitly names a private or shared destination, omit \"creation_mode\" and use that parent. Otherwise, use \"draft\" when the user clearly wants a durable page but has not named a destination. Prefer this explicit draft mode over omitting the parent. Draft mode is server-enforced: it creates a private workspace-level page and cannot be combined with \"parent\". Create it without first asking where it should live. After creation, tell the user it is private and offer to move it once they name a destination."
													},
													"parent": {
														"oneOf": [
															{
																"type": "string",
																"const": "memory",
																"description": "Always `memory`"
															},
															{
																"type": "object",
																"properties": {
																	"page_id": {
																		"type": "string",
																		"description": "The ID of the parent page (with or without dashes), for example, 195de9221179449fab8075a27c979105"
																	},
																	"type": {
																		"type": "string",
																		"const": "page_id",
																		"description": "Always `page_id`"
																	}
																},
																"required": ["page_id"]
															},
															{
																"type": "object",
																"properties": {
																	"database_id": {
																		"type": "string",
																		"description": "The ID of the parent database (with or without dashes), for example, 195de9221179449fab8075a27c979105"
																	},
																	"type": {
																		"type": "string",
																		"const": "database_id",
																		"description": "Always `database_id`"
																	}
																},
																"required": ["database_id"]
															},
															{
																"type": "object",
																"properties": {
																	"data_source_id": {
																		"type": "string",
																		"description": "The ID of the parent data source (collection), with or without dashes. For example, f336d0bc-b841-465b-8045-024475c079dd"
																	},
																	"type": {
																		"type": "string",
																		"const": "data_source_id",
																		"description": "Always `data_source_id`"
																	}
																},
																"required": ["data_source_id"]
															},
															{
																"type": "object",
																"properties": {
																	"teamspace_id": {
																		"type": "string",
																		"description": "The ID of the teamspace in which to create top-level pages (with or without dashes)."
																	}
																},
																"additionalProperties": false,
																"required": ["teamspace_id"]
															}
														],
														"description": "All pages in one call share this parent. Pass \"memory\" to save a personal memory; see notion://docs/memory. Otherwise use a page (page_id), database page (database_id), data source (data_source_id), or teamspace root (teamspace_id, from get_teams). Teamspace roots require a user-backed connection and permission to add top-level pages. A database_id cannot be used when the database has more than one data source; fetch it and use the right collection:// URL as data_source_id. If omitted, pages are private at the workspace level. When no destination is named, prefer explicit \"creation_mode\": \"draft\" over omitting the parent."
													},
													"allow_async": {
														"type": "boolean",
														"description": "Default to true for page creation. Set to false only when the next step needs the created pages immediately, or when async execution rejects the request as too large. When this create operation is accepted for background execution, it returns an async_task result. Use get_async_task to wait for a succeeded status before taking a dependent action on the pages. For pages created with template_id, a succeeded status does not mean template content is ready; fetch and retry until it is ready before changing or relying on that content. If omitted or false, the tool keeps the existing synchronous result shape."
													}
												},
												"required": ["pages"],
												"description": "The parameters for the create_pages tool. Creates one or more Notion pages with the specified properties and content.\n\n\t\t## Core rules\n\n\t\t**IMPORTANT**: Before writing page content, read the MCP resource `notion://docs/enhanced-markdown-spec` through your MCP client's resource-reading interface, or call the Notion \"fetch\" tool with this URI if your client does not support reading MCP resources. Do NOT pass this URI to any other URL-fetching tool.\n\t\tDo NOT guess or hallucinate Markdown syntax. Do not put the page title at the top of\n\t\tcontent; set it in properties. By default, use native Notion mentions for references you add to existing Notion pages,\n\t\tdatabases, data sources, people, and dates. Use Markdown links only for external URLs or when\n\t\tthe user requests a plain link. For a person, use a user mention with their user URL, found with\n\t\tsearch using query_type \"user\"; do not write \"@Name\" as plain text. For a specific date or time,\n\t\tsuch as a due date or meeting time, use a date mention. The Markdown specification gives the\n\t\tmention syntax.\n\n\t\tUse a named destination as parent. Otherwise use \"creation_mode\": \"draft\" for a durable\n\t\tprivate page. Do not combine draft mode with parent, or move or share it without direction.\n\n\t\tFor a meeting note, use create_meeting_note if available, even in a Meetings\n\t\tdatabase, unless the user wants a regular page.\n\n\t\tFor a database destination, ALWAYS fetch first. Use its collection:// URL as data_source_id,\n\t\texact property names, and title property. Never put a database ID in page_id. Outside a\n\t\tdatabase, the only allowed property is the required \"title\".\n\n\t\tFor reusable instructions, set \"is_skill\": true. Before creating a skill, read the MCP resource `notion://docs/skills` through your MCP client's resource-reading interface. If your client does not support reading MCP resources, call the Notion \"fetch\" tool with this URI instead. Do NOT pass this URI to any other URL-fetching tool.\n\t\tDo not mark ordinary pages or drafts as skills.\n\t\tReport any \"warnings\" in the result to the user."
											}
										},
										"required": ["type", "create_pages"],
										"title": "Create Pages"
									},
									{
										"type": "object",
										"properties": {
											"type": {
												"type": "string",
												"const": "update_page",
												"description": "The name of the tool to run."
											},
											"update_page": {
												"type": "object",
												"properties": {
													"page_id": {
														"type": "string",
														"description": "The page ID, with or without dashes, or a Notion page URL."
													},
													"command": {
														"type": "string",
														"enum": [
															"update_properties",
															"update_content",
															"replace_content",
															"insert_content",
															"apply_template",
															"update_verification"
														],
														"description": "The update command to execute."
													},
													"properties": {
														"type": "object",
														"additionalProperties": {
															"oneOf": [
																{
																	"type": "string"
																},
																{
																	"type": "number"
																},
																{
																	"type": "array",
																	"items": {
																		"oneOf": [
																			{
																				"type": "string"
																			},
																			{
																				"type": "object",
																				"properties": {
																					"type": {
																						"type": "string",
																						"const": "file_upload",
																						"description": "Always `file_upload`"
																					},
																					"file_upload": {
																						"type": "object",
																						"properties": {
																							"id": {
																								"type": "string",
																								"description": "ID of a file upload returned by create_file_upload or create_attachment."
																							}
																						},
																						"required": ["id"],
																						"description": "The uploaded file to attach to the Files property."
																					}
																				},
																				"required": ["type", "file_upload"]
																			}
																		]
																	},
																	"maxItems": 100
																},
																{
																	"type": "null"
																}
															]
														},
														"description": "Used by the \"update_properties\" command, and required unless \"icon\", \"cover\", or \"is_skill\" is set. A JSON object that updates the page's properties.\nFor pages in a database, fetch the page or its data source first and use the exact property names and SQLite schema definition shown in <database>.\nFor page titles outside a database, use \"title\" in inline Markdown.\nFor a Files property, an uploaded file can be provided as {\"type\":\"file_upload\",\"file_upload\":{\"id\":\"<file-upload-id>\"}} inside the property's array.\nUse null to remove a property's value.\n**IMPORTANT**: Some property types require specific formats:\n\t- Date properties: Split into \"date:{property}:start\", \"date:{property}:end\" (optional), and\n\t  \"date:{property}:is_datetime\" (0 or 1)\n\t- Place properties: Split into \"place:{property}:name\", \"place:{property}:address\",\n\t  \"place:{property}:latitude\", \"place:{property}:longitude\", and\n\t  \"place:{property}:google_place_id\" (optional)\n\t- Number properties: Use JavaScript numbers (not strings)\n\t- Checkbox properties: Use \"__YES__\" for checked, \"__NO__\" for unchecked\n\t- Relation properties: Use an array of related page URLs or page IDs, e.g.\n\t  [\"https://www.notion.so/26ab1f9f4c5f80b18d3bd10a6b1d2f4e\", \"26ab1f9f-4c5f-80b1-8d3b-d10a6b1d2f4e\"]\n\t- Person properties: Use an array of user IDs, user or agent URLs, or group references\n\t  copied from fetch output (\"space_permission_group-<UUID>\"). Bare group UUIDs are also supported.\n\t- Files properties: Use a JSON array of file IDs, Notion Folder URLs, and/or <folder> tags\n\t  copied from fetch output. Folders are stored as native Folder references, not ordinary links.\n\n\t**Special property naming**: Properties named \"id\" or \"url\" (case insensitive) must be\n\tprefixed with \"userDefined:\" (e.g., \"userDefined:URL\", \"userDefined:id\")"
													},
													"new_str": {
														"type": "string",
														"description": "Required for \"replace_content\" command. The new content string to replace the entire page content with. Preserve child pages and databases with their exact fetched <page url=\"...\"> or <database url=\"...\"> tags. For people and dates, use user and date mentions rather than plain text; notion://docs/enhanced-markdown-spec gives the syntax."
													},
													"content": {
														"type": "string",
														"description": "Required for \"insert_content\" command. The markdown content to insert into the page. For people and dates, use user and date mentions rather than plain text; notion://docs/enhanced-markdown-spec gives the syntax."
													},
													"content_updates": {
														"type": "array",
														"items": {
															"type": "object",
															"properties": {
																"old_str": {
																	"type": "string",
																	"minLength": 1,
																	"description": "The existing content string to find and replace. Must exactly match the page content."
																},
																"new_str": {
																	"type": "string",
																	"description": "The new content string to replace old_str with. For people and dates, use user and date mentions rather than plain text; notion://docs/enhanced-markdown-spec gives the syntax."
																},
																"replace_all_matches": {
																	"type": "boolean",
																	"description": "If true, replaces all occurrences of old_str. If false (default), the operation fails if there are multiple matches."
																}
															},
															"required": ["old_str", "new_str"]
														},
														"maxItems": 100,
														"description": "Required for \"update_content\" command. An array of search-and-replace operations, each with old_str (content to find) and new_str (replacement content). Operations that match are applied, and each one that matches nothing is reported in \"warnings\". The call fails only when no operation that changes content matches."
													},
													"position": {
														"oneOf": [
															{
																"type": "object",
																"properties": {
																	"type": {
																		"type": "string",
																		"const": "start",
																		"description": "Insert the content at the start of the page."
																	}
																},
																"required": ["type"]
															},
															{
																"type": "object",
																"properties": {
																	"type": {
																		"type": "string",
																		"const": "end",
																		"description": "Insert the content at the end of the page."
																	}
																},
																"required": ["type"]
															}
														],
														"description": "Optional for \"insert_content\" command. Use {\"type\":\"start\"} to prepend content or {\"type\":\"end\"} to append content. Omit to append."
													},
													"allow_deleting_content": {
														"type": "boolean",
														"description": "Optional for \"replace_content\" and \"update_content\" commands. Set to true to allow deletion of child pages and databases that are not referenced in the new content. If false or omitted, the operation will fail with an error listing the pages/databases that would be deleted. Show that list and ask the user for confirmation before retrying with true."
													},
													"template_id": {
														"type": "string",
														"description": "Required for \"apply_template\" command. The ID of a template to apply to this page; any page ID can be used as a template. Template content is appended to any existing page content asynchronously."
													},
													"verification_status": {
														"type": "string",
														"enum": ["verified", "unverified"],
														"description": "Required for \"update_verification\" command. Set to \"verified\" to mark the page as verified, or \"unverified\" to remove verification. Requires a Business or Enterprise plan unless the page is in a wiki. When updating verification, the owner will be automatically set to the authenticated actor."
													},
													"verification_expiry_days": {
														"type": "integer",
														"minimum": 1,
														"description": "Optional for \"update_verification\" command when verification_status is \"verified\". Number of days until verification expires (e.g. 7, 30, 90). Omit for indefinite verification."
													},
													"icon": {
														"type": "string",
														"description": "An emoji character (e.g. \"🚀\"), a custom emoji by name (e.g. \":rocket_ship:\"), a Notion icon identifier as returned by fetch (e.g. \"icons/pizza_blue\"), or an external image URL. Use \"none\" to remove the icon. Omit to leave unchanged. Can be set alongside any command. To change only the icon, use \"update_properties\" and omit \"properties\". Keep the title free of a duplicate leading emoji because the icon renders separately."
													},
													"cover": {
														"type": "string",
														"description": "An external image URL for the page cover. Use \"none\" to remove the cover. Omit to leave unchanged. Can be set alongside any command. To change only the cover, use \"update_properties\" and omit \"properties\"."
													},
													"is_skill": {
														"type": "boolean",
														"description": "Set to true to mark this page as a skill, or false to remove the skill designation. Can be set alongside any command. To change only skill status, use \"update_properties\" and omit \"properties\". Before creating a skill, read the MCP resource `notion://docs/skills` through your MCP client's resource-reading interface. If your client does not support reading MCP resources, call the Notion \"fetch\" tool with this URI instead. Do NOT pass this URI to any other URL-fetching tool."
													},
													"allow_async": {
														"type": "boolean",
														"description": "Default to true for page updates. Set to false only when the next step needs the updated page immediately, or when async execution rejects the request as too large. When this update operation is accepted for background execution, it returns an async_task result. Use get_async_task to wait for a succeeded status before taking a dependent action on the page. For apply_template, a succeeded status does not mean template content is ready; fetch and retry until it is ready before changing or relying on that content. If omitted or false, the tool waits for a synchronous result when possible, but may still return a pollable async_task response if queued execution exceeds the synchronous wait deadline."
													},
													"draft_mode": {
														"type": "boolean",
														"description": "Optional. When true, your edit is saved in revision as draft for the user to review and apply, and the page is not changed. Use it when the user wants to review changes before they take effect."
													},
													"change_description": {
														"type": "string",
														"maxLength": 2000,
														"description": "Optional. One short sentence on why you are changing this page and what has changed. The user sees it next to this page's changes when they review them."
													}
												},
												"required": ["page_id", "command"],
												"description": "The parameters for the update_page tool. Update a Notion page's properties, content, icon, or cover.\n\t\tFor only an icon or cover, use \"update_properties\" without \"properties\".\n\n\t\t## Core rules\n\n\t\t**IMPORTANT**: Before writing page content, read the MCP resource `notion://docs/enhanced-markdown-spec` through your MCP client's resource-reading interface, or call the Notion \"fetch\" tool with this URI if your client does not support reading MCP resources. Do NOT pass this URI to any other URL-fetching tool.\n\t\tDon't guess Markdown syntax. By default, use native Notion mentions for references you add to existing Notion pages,\n\t\tdatabases, data sources, people, and dates. Use Markdown links only for external URLs or when\n\t\tthe user requests a plain link. For a person, use a user mention with their user URL, found with\n\t\tsearch using query_type \"user\"; do not write \"@Name\" as plain text. For a specific date or time,\n\t\tsuch as a due date or meeting time, use a date mention. The Markdown specification gives the\n\t\tmention syntax.\n\n\t\tBefore changing content, fetch unless already loaded. Match nearby headings, block types,\n\t\tnesting, lists, tables, and prose style.\n\n\t\tMake the smallest edit. Use \"update_content\" for targeted search-and-replace and\n\t\t\"insert_content\" only to prepend or append. Avoid \"replace_content\" when a\n\t\ttargeted command works. Preserve unrelated wording, structure, order, and native references.\n\t\tDo not broadly rewrite unless asked.\n\n\t\tFor \"update_content\", use the smallest exact old_str that uniquely matches the target.\n\t\tAsk before removing material content the user did not identify. After a multi-part or structural edit, fetch the page again and\n\t\tverify the requested content and nesting. Skip this extra read for a simple exact edit.\n\n\t\tFor \"replace_content\", preserve child pages and databases with their exact fetched tags.\n\t\tIf validation says child content would be deleted, show the list and ask first.\n\t\tNever retry with \"allow_deleting_content\": true without confirmation.\n\t\tReport any \"warnings\" in the result."
											}
										},
										"required": ["type", "update_page"],
										"title": "Update Page"
									},
									{
										"type": "object",
										"properties": {
											"type": {
												"type": "string",
												"const": "delete_pages",
												"description": "The name of the tool to run."
											},
											"delete_pages": {
												"type": "object",
												"properties": {
													"page_ids": {
														"type": "array",
														"items": {
															"type": "string"
														},
														"maxItems": 20,
														"minItems": 1,
														"description": "IDs of the pages to move to Trash, 1 to 20. Database rows are pages. Duplicate IDs are processed once."
													},
													"user_confirmed": {
														"type": "boolean",
														"description": "Set to true only after the user explicitly asked to delete these exact pages, or confirmed after you showed them the list. If omitted or false, nothing is trashed and the error lists what would be moved to Trash so you can confirm with the user."
													}
												},
												"additionalProperties": false,
												"required": ["page_ids"],
												"description": "The parameters for the delete_pages tool. Move Notion pages to Trash. They can be restored with the restore_pages tool or from Trash in Notion. Database rows are pages. To move a database to Trash, use delete_databases. To remove content inside a page, use update_page instead. Use this tool only when the user explicitly asks to delete specific pages. Never use it on your own initiative to clean up, deduplicate, or reorganize content. Without user_confirmed: true, nothing is trashed and the error lists what would be moved to Trash; show that list to the user and retry only after they confirm."
											}
										},
										"required": ["type", "delete_pages"],
										"title": "Delete Pages"
									},
									{
										"type": "object",
										"properties": {
											"type": {
												"type": "string",
												"const": "delete_databases",
												"description": "The name of the tool to run."
											},
											"delete_databases": {
												"type": "object",
												"properties": {
													"database_ids": {
														"type": "array",
														"items": {
															"type": "string"
														},
														"maxItems": 20,
														"minItems": 1,
														"description": "IDs of the databases to move to Trash, 1 to 20. Each must be a full-page or inline database that owns its data, not a linked view. Duplicate IDs are processed once."
													},
													"user_confirmed": {
														"type": "boolean",
														"description": "Set to true only after the user explicitly asked to delete these exact databases, or confirmed after you showed them the list. If omitted or false, nothing is trashed and the error lists what would be moved to Trash so you can confirm with the user."
													}
												},
												"additionalProperties": false,
												"required": ["database_ids"],
												"description": "The parameters for the delete_databases tool. Move Notion databases to Trash. They can be restored with the restore_pages tool or from Trash in Notion. Each database goes to Trash with all of its rows. Pass a full-page or inline database that owns its data, not a linked view. To move a page or database row to Trash, use delete_pages. Use this tool only when the user explicitly asks to delete specific databases. Never use it on your own initiative to clean up, deduplicate, or reorganize content. Without user_confirmed: true, nothing is trashed and the error lists what would be moved to Trash; show that list to the user and retry only after they confirm."
											}
										},
										"required": ["type", "delete_databases"],
										"title": "Delete Databases"
									},
									{
										"type": "object",
										"properties": {
											"type": {
												"type": "string",
												"const": "restore_pages",
												"description": "The name of the tool to run."
											},
											"restore_pages": {
												"type": "object",
												"properties": {
													"page_ids": {
														"type": "array",
														"items": {
															"type": "string"
														},
														"maxItems": 20,
														"minItems": 1,
														"description": "IDs of 1 to 20 pages or databases in Trash. Database rows are pages. Duplicate IDs are restored once."
													}
												},
												"additionalProperties": false,
												"required": ["page_ids"],
												"description": "The parameters for the restore_pages tool. Restore Notion pages or databases from Trash to where they were before they were deleted. Use this when the user asks to undo a deletion or to restore something from Trash. Database rows are pages. Restoring something that is already out of Trash succeeds and changes nothing. To restore a page whose parent is in Trash, restore the parent."
											}
										},
										"required": ["type", "restore_pages"],
										"title": "Restore Pages"
									},
									{
										"type": "object",
										"properties": {
											"type": {
												"type": "string",
												"const": "convert_page_to_skill",
												"description": "The name of the tool to run."
											},
											"convert_page_to_skill": {
												"type": "object",
												"properties": {
													"page_url": {
														"type": "string",
														"minLength": 1,
														"maxLength": 2000,
														"format": "uri",
														"description": "The full Notion URL of the page to mark as a skill."
													}
												},
												"required": ["page_url"],
												"description": "The parameters for the convert_page_to_skill tool. Mark an existing Notion page as a skill without changing its content. The page must be in the current workspace, and the authenticated user must have permission to edit it. Use this tool only when the user wants the page's current contents designated as a skill.\n\nIf availability is not already known for this connection, call get_tool_access with {} before using this tool. Reuse the returned access map across tools; check the status and restricted_parameters."
											}
										},
										"required": ["type", "convert_page_to_skill"],
										"title": "Convert Page To Skill"
									},
									{
										"type": "object",
										"properties": {
											"type": {
												"type": "string",
												"const": "upload_skill",
												"description": "The name of the tool to run."
											},
											"upload_skill": {
												"type": "object",
												"properties": {
													"action": {
														"type": "string",
														"enum": ["prepare", "complete"],
														"description": "Prepare an upload or complete a previously uploaded archive."
													},
													"page_id": {
														"type": "string",
														"format": "uuid",
														"description": "Target page in a Skills database. Create a new page first to import a new skill."
													},
													"content_length": {
														"type": "integer",
														"minimum": 1,
														"maximum": 20971520,
														"description": "Required for prepare. Exact compressed archive size in bytes (maximum 20 MiB)."
													},
													"checksum_crc32": {
														"type": "string",
														"pattern": "^[A-Za-z0-9+/]{6}==$",
														"examples": ["AAAAAA=="],
														"description": "Required for prepare. Base64-encoded big-endian CRC32 of the tar.gz bytes; S3 verifies it on upload."
													},
													"upload_token": {
														"type": "string",
														"minLength": 1,
														"maxLength": 16384,
														"description": "Required for complete. Opaque token from prepare. Bound to the integration, workspace, and page; expires after ten minutes."
													}
												},
												"additionalProperties": false,
												"required": ["action", "page_id"],
												"description": "The parameters for the upload_skill tool. Import a spec-compliant Agent Skills directory into a page in a Skills database. First call action=prepare with page_id and the exact tar.gz content_length and checksum_crc32. PUT the raw archive bytes to upload_url with all upload_headers, then call action=complete with the same page_id and upload_token. The archive must contain SKILL.md with name/description YAML frontmatter, either at the root or in a single matching skill-name directory. Completion replaces the page title, Description, body, and Files; it preserves the page and uses the page-update diff engine rather than recreating all content blocks. SKILL.md becomes page content. Its sibling folders and files are added directly to Files, preserving nested directories without a skill-name wrapper. Previous folders are not deleted. For a new skill, create a page in a Skills database first. Maximum 20 MiB compressed, 25 MiB expanded, 1000 entries, 20 path levels, and 200 UTF-8 bytes per filename. Paths must be unique ignoring case. Only name and description are imported from frontmatter; optional fields are ignored. Links and special files are rejected. Upload URLs and tokens expire after ten minutes. Uploading never executes skill instructions or scripts.\n\nIf availability is not already known for this connection, call get_tool_access with {} before using this tool. Reuse the returned access map across tools; check the status and restricted_parameters."
											}
										},
										"required": ["type", "upload_skill"],
										"title": "Upload Skill"
									},
									{
										"type": "object",
										"properties": {
											"type": {
												"type": "string",
												"const": "download_skill",
												"description": "The name of the tool to run."
											},
											"download_skill": {
												"type": "object",
												"properties": {
													"id": {
														"$ref": "#/components/schemas/idRequest",
														"description": "Identifier for a Notion skill page."
													}
												},
												"additionalProperties": false,
												"required": ["id"],
												"description": "The parameters for the download_skill tool. Download a spec-compliant Notion Skill as a complete tar.gz archive containing SKILL.md and its supporting files and nested folders. Pass the skill page ID. Returns a temporary signed url. Download and extract the archive to read or use the skill.\n\nIf availability is not already known for this connection, call get_tool_access with {} before using this tool. Reuse the returned access map across tools; check the status and restricted_parameters."
											}
										},
										"required": ["type", "download_skill"],
										"title": "Download Skill"
									},
									{
										"type": "object",
										"properties": {
											"type": {
												"type": "string",
												"const": "get_enabled_skills",
												"description": "The name of the tool to run."
											},
											"get_enabled_skills": {
												"type": "object",
												"properties": {},
												"additionalProperties": false,
												"description": "The parameters for the get_enabled_skills tool. Use this tool to view the Notion skills the user has enabled for you and other external MCP clients, each with a name and a description of when it should be used. If you choose to use one of these skills, mention to the user that you are loading the skill from Notion first, then download them."
											}
										},
										"required": ["type", "get_enabled_skills"],
										"title": "Get Enabled Skills"
									},
									{
										"type": "object",
										"properties": {
											"type": {
												"type": "string",
												"const": "update_skill_settings",
												"description": "The name of the tool to run."
											},
											"update_skill_settings": {
												"type": "object",
												"required": ["skill_url", "settings"],
												"additionalProperties": false,
												"properties": {
													"skill_url": {
														"type": "string",
														"description": "The URL of an existing Notion Skill in the current workspace."
													},
													"settings": {
														"type": "object",
														"additionalProperties": false,
														"properties": {
															"enabled": {
																"type": "boolean",
																"description": "Enable or disable this Skill in Notion Agent. Disabling also clears placements and connected-agent use."
															},
															"use_automatically": {
																"type": "boolean",
																"description": "Allow agents to use this enabled Skill automatically when relevant. Set false to require explicit invocation without disabling the Skill or changing its placements."
															},
															"use_in_connected_agents": {
																"type": "boolean",
																"description": "Make this Skill available to agents connected over MCP, independently of its Notion Agent installation. Requires a non-empty Skill description."
															},
															"show_in_chat": {
																"type": "boolean",
																"description": "Show this enabled Skill in the Agent chat menu."
															},
															"show_in_editor": {
																"type": "boolean",
																"description": "Show this enabled Skill in the text selection menu."
															},
															"show_during_meetings": {
																"type": "boolean",
																"description": "Show this enabled Skill during AI meeting notes."
															},
															"show_after_meetings": {
																"type": "boolean",
																"description": "Show this enabled Skill after AI meeting notes."
															}
														},
														"description": "Change only the provided settings. Automatic use and placements require enabling the Skill first or in this request. Connected-agent use is independent of Notion Agent installation. Disabling the Skill also clears connected-agent use."
													}
												},
												"description": "The parameters for the update_skill_settings tool. Update the current user's settings for one Notion Skill. Enable or disable the Skill, control automatic use, configure where it is shown, or enable use in connected MCP agents. Omitted settings remain unchanged. This does not run the Skill."
											}
										},
										"required": ["type", "update_skill_settings"],
										"title": "Update Skill Settings"
									},
									{
										"type": "object",
										"properties": {
											"type": {
												"type": "string",
												"const": "update_enabled_skills",
												"description": "The name of the tool to run."
											},
											"update_enabled_skills": {
												"type": "object",
												"additionalProperties": false,
												"properties": {
													"add_skill_urls": {
														"type": "array",
														"maxItems": 50,
														"uniqueItems": true,
														"items": {
															"type": "string",
															"description": "A Notion Skill page URL."
														},
														"description": "Notion Skill page URLs to enable for the current user on every surface."
													},
													"remove_skill_urls": {
														"type": "array",
														"maxItems": 50,
														"uniqueItems": true,
														"items": {
															"type": "string",
															"description": "A Notion Skill page URL."
														},
														"description": "Notion Skill page URLs to turn off on the requested surfaces."
													},
													"surfaces": {
														"type": "array",
														"maxItems": 2,
														"items": {
															"type": "string",
															"enum": ["mcp", "notion_ai"]
														},
														"description": "Surfaces to turn remove_skill_urls off for. Defaults to both external MCP and Notion AI. Does not apply to add_skill_urls."
													}
												},
												"description": "The parameters for the update_enabled_skills tool. Enable Notion Skills for the current user, or turn them off for external MCP clients, Notion AI, or both. Adding a Skill URL enables it for the user on every surface. Removing one turns it off for the requested surfaces, which default to both. Changes only the current user's Skill settings."
											}
										},
										"required": ["type", "update_enabled_skills"],
										"title": "Update Enabled Skills"
									},
									{
										"type": "object",
										"properties": {
											"type": {
												"type": "string",
												"const": "complete_mcp_setup",
												"description": "The name of the tool to run."
											},
											"complete_mcp_setup": {
												"type": "object",
												"properties": {
													"completed_setup": {
														"type": "string",
														"enum": ["skills", "setup_prompt"],
														"description": "Setup type you have just completed."
													}
												},
												"additionalProperties": false,
												"required": ["completed_setup"],
												"description": "The parameters for the complete_mcp_setup tool. Records when you have completed a guided set up flow of the Notion MCP. Only call this tool when explicitly asked."
											}
										},
										"required": ["type", "complete_mcp_setup"],
										"title": "Complete Mcp Setup"
									},
									{
										"type": "object",
										"properties": {
											"type": {
												"type": "string",
												"const": "get_mcp_search_access",
												"description": "The name of the tool to run."
											},
											"get_mcp_search_access": {
												"type": "object",
												"properties": {},
												"additionalProperties": false,
												"description": "The parameters for the get_mcp_search_access tool. Reports the session access hosted MCP uses to choose its tools and instructions. For search: the user's AI search access for this workspace and, with access in the split-search cohort, whether the workspace has a connected source. For memories: whether memory tools are listed, and which setting turned them off. For the ChatGPT page editor: whether its tools are registered. The hosted MCP server calls this when a session starts; it is not registered as a client-facing MCP tool, so its calls stay separate from get_tool_access usage."
											}
										},
										"required": ["type", "get_mcp_search_access"],
										"title": "Get Mcp Search Access"
									},
									{
										"type": "object",
										"properties": {
											"type": {
												"type": "string",
												"const": "move_pages",
												"description": "The name of the tool to run."
											},
											"move_pages": {
												"type": "object",
												"properties": {
													"page_or_database_ids": {
														"type": "array",
														"items": {
															"type": "string"
														},
														"maxItems": 100,
														"minItems": 1,
														"description": "An array of up to 100 page or database IDs to move. IDs are v4 UUIDs and can be supplied with or without dashes (e.g. extracted from a <page> or <database> URL given by the \"search\" or \"fetch\" tool). Data Sources under Databases can't be moved individually."
													},
													"new_parent": {
														"oneOf": [
															{
																"type": "object",
																"properties": {
																	"page_id": {
																		"type": "string",
																		"description": "The ID of the parent page (with or without dashes), for example, 195de9221179449fab8075a27c979105"
																	},
																	"type": {
																		"type": "string",
																		"const": "page_id",
																		"description": "Always `page_id`"
																	}
																},
																"required": ["page_id"]
															},
															{
																"type": "object",
																"properties": {
																	"database_id": {
																		"type": "string",
																		"description": "The ID of the parent database (with or without dashes), for example, 195de9221179449fab8075a27c979105"
																	},
																	"type": {
																		"type": "string",
																		"const": "database_id",
																		"description": "Always `database_id`"
																	}
																},
																"required": ["database_id"]
															},
															{
																"type": "object",
																"properties": {
																	"data_source_id": {
																		"type": "string",
																		"description": "The ID of the parent data source (collection), with or without dashes. For example, f336d0bc-b841-465b-8045-024475c079dd"
																	},
																	"type": {
																		"type": "string",
																		"const": "data_source_id",
																		"description": "Always `data_source_id`"
																	}
																},
																"required": ["data_source_id"]
															},
															{
																"type": "object",
																"properties": {
																	"type": {
																		"type": "string",
																		"const": "workspace",
																		"description": "The parent type."
																	}
																},
																"required": ["type"]
															}
														],
														"description": "The new parent under which the pages will be moved. This can be a page, the workspace, a database, or a specific data source under a database when there are multiple. Moving pages to the workspace level adds them as private pages and should rarely be used."
													}
												},
												"required": ["page_or_database_ids", "new_parent"],
												"description": "The parameters for the move_pages tool. Move one or more Notion pages or databases to a new parent."
											}
										},
										"required": ["type", "move_pages"],
										"title": "Move Pages"
									},
									{
										"type": "object",
										"properties": {
											"type": {
												"type": "string",
												"const": "duplicate_page",
												"description": "The name of the tool to run."
											},
											"duplicate_page": {
												"type": "object",
												"properties": {
													"page_id": {
														"type": "string",
														"description": "The page ID, with or without dashes, or a Notion page URL."
													}
												},
												"required": ["page_id"],
												"description": "The parameters for the duplicate_page tool. Duplicate a Notion page. The page must be within the current workspace, and you must have permission to access it. The duplication completes asynchronously, so do not rely on the new page identified by the returned ID or URL to be populated immediately. Let the user know that the duplication is in progress and that they can check back later using the 'fetch' tool or by clicking the returned URL and viewing it in the Notion app."
											}
										},
										"required": ["type", "duplicate_page"],
										"title": "Duplicate Page"
									},
									{
										"type": "object",
										"properties": {
											"type": {
												"type": "string",
												"const": "create_database",
												"description": "The name of the tool to run."
											},
											"create_database": {
												"allOf": [
													{
														"type": "object",
														"properties": {
															"parent": {
																"type": "object",
																"properties": {
																	"page_id": {
																		"type": "string",
																		"description": "The ID of the parent page, with or without dashes."
																	},
																	"type": {
																		"type": "string",
																		"const": "page_id",
																		"description": "Always `page_id`"
																	}
																},
																"required": ["page_id"],
																"description": "The parent under which to create the new database. If omitted, the database will be created as a private page at the workspace level."
															},
															"title": {
																"type": "string",
																"description": "The title of the new database."
															},
															"description": {
																"type": "string",
																"description": "The description of the new database."
															}
														}
													},
													{
														"oneOf": [
															{
																"type": "object",
																"properties": {
																	"schema": {
																		"type": "string",
																		"description": "SQL DDL CREATE TABLE statement defining the database schema. Cannot be combined with database_type. Column names must be double-quoted and type options use single quotes.\n\nProperty type syntax:\n- Simple: TITLE, RICH_TEXT, DATE, PEOPLE, CHECKBOX, URL, EMAIL, PHONE_NUMBER, FILES\n- SELECT('opt':color, ...) / MULTI_SELECT('opt':color, ...)\n- STATUS('Backlog':gray:to_do, 'Building':blue:in_progress, 'Shipped':green:complete); groups are to_do, in_progress, complete\n- NUMBER [FORMAT 'dollar'] / FORMULA('expression')\n- RELATION('ds') for a one-way relation\n- RELATION('ds', DUAL) for a two-way relation\n- RELATION('ds', DUAL 'Children') with a synced property name\n- RELATION('ds', DUAL 'Children' 'children') with a synced name and synced_id (for self-relations)\n- ROLLUP('rel_prop', 'target_prop', 'function')\n- UNIQUE_ID [PREFIX 'X'] / CREATED_TIME / LAST_EDITED_TIME\n- Any column: COMMENT 'description text'\nColors: default, gray, brown, orange, yellow, green, blue, purple, pink, red.\n\nExamples:\n- Minimal: <example>CREATE TABLE (\"Name\" TITLE)</example>\n- With options: <example>CREATE TABLE (\"Name\" TITLE, \"Budget\" NUMBER FORMAT 'dollar', \"Tags\" MULTI_SELECT('eng':blue, 'design':pink), \"Task ID\" UNIQUE_ID PREFIX 'PRJ')</example>\n- Self-relations are a two-step flow: create the database, then use its data source ID with update_data_source to add paired properties such as RELATION('ds', DUAL 'Children' 'children')."
																	}
																},
																"required": ["schema"]
															},
															{
																"type": "object",
																"properties": {
																	"database_type": {
																		"type": "string",
																		"enum": ["tasks", "projects", "skills"],
																		"description": "Create a canonical typed database with Notion's required properties and metadata. Supported types: tasks, projects, skills. Example: <example>tasks</example>. Use title \"Tasks\" when needed."
																	}
																},
																"required": ["database_type"]
															}
														]
													}
												],
												"description": "The parameters for the create_database tool. Creates a new Notion database using SQL DDL syntax, or a canonical typed database\nfor tasks, projects, or skills.\n\nProvide exactly one of:\n- schema: a CREATE TABLE statement. If no title property is provided, \"Name\" is auto-added.\n- database_type: one of tasks, projects, or skills. The database is created with\n  the canonical required properties and typed metadata used by Notion.\n\nFor schema, use CREATE TABLE with double-quoted column names and single-quoted\ntype options. If no title property is provided, \"Name\" is auto-added.\n\nProperty type syntax:\n- Simple: TITLE, RICH_TEXT, DATE, PEOPLE, CHECKBOX, URL, EMAIL, PHONE_NUMBER, FILES\n- SELECT('opt':color, ...) / MULTI_SELECT('opt':color, ...)\n- STATUS('Backlog':gray:to_do, 'Building':blue:in_progress, 'Shipped':green:complete); groups are to_do, in_progress, complete\n- NUMBER [FORMAT 'dollar'] / FORMULA('expression')\n- RELATION('ds') for a one-way relation\n- RELATION('ds', DUAL) for a two-way relation\n- RELATION('ds', DUAL 'Children') with a synced property name\n- RELATION('ds', DUAL 'Children' 'children') with a synced name and synced_id (for self-relations)\n- ROLLUP('rel_prop', 'target_prop', 'function')\n- UNIQUE_ID [PREFIX 'X'] / CREATED_TIME / LAST_EDITED_TIME\n- Any column: COMMENT 'description text'\nColors: default, gray, brown, orange, yellow, green, blue, purple, pink, red.\n\nReturns Markdown with schema, SQLite definition, and data source ID in\n<data-source> tag for use with update_data_source and query_data_sources tools."
											}
										},
										"required": ["type", "create_database"],
										"title": "Create Database"
									},
									{
										"type": "object",
										"properties": {
											"type": {
												"type": "string",
												"const": "create_folder",
												"description": "The name of the tool to run."
											},
											"create_folder": {
												"type": "object",
												"properties": {
													"parent": {
														"oneOf": [
															{
																"type": "object",
																"properties": {
																	"page_id": {
																		"type": "string",
																		"description": "The ID of the page that will own the Folder."
																	}
																},
																"additionalProperties": false,
																"required": ["page_id"]
															},
															{
																"type": "object",
																"properties": {
																	"folder_id": {
																		"type": "string",
																		"description": "The ID of the Folder that will contain the new Folder."
																	}
																},
																"additionalProperties": false,
																"required": ["folder_id"]
															}
														],
														"description": "Where to create the Folder."
													},
													"title": {
														"type": "string",
														"description": "The title of the new Folder."
													}
												},
												"required": ["parent", "title"],
												"description": "The parameters for the create_folder tool. Creates an empty Notion Folder. Set parent.page_id for a top-level Folder owned\nby a page, or parent.folder_id to create a nested Folder inside another Folder.\nA page-owned Folder is not inserted into the page's content. A nested Folder is\nappended to its parent Folder's content. The Folder inherits access from its\nparent.\n\nThis tool creates only the empty Folder. It is non-idempotent and creates a new\nFolder on every successful call."
											}
										},
										"required": ["type", "create_folder"],
										"title": "Create Folder"
									},
									{
										"type": "object",
										"properties": {
											"type": {
												"type": "string",
												"const": "update_folder",
												"description": "The name of the tool to run."
											},
											"update_folder": {
												"type": "object",
												"properties": {
													"folder_id": {
														"type": "string",
														"description": "The ID of the Folder to update."
													},
													"command": {
														"type": "string",
														"enum": [
															"add_files",
															"remove_files",
															"add_subfolder"
														],
														"description": "The Folder update to apply."
													},
													"file_upload_ids": {
														"type": "array",
														"items": {
															"type": "string"
														},
														"maxItems": 100,
														"minItems": 1,
														"uniqueItems": true,
														"description": "Required for add_files. One or more file upload IDs returned by the file upload tools."
													},
													"file_urls": {
														"type": "array",
														"items": {
															"type": "string"
														},
														"maxItems": 100,
														"minItems": 1,
														"uniqueItems": true,
														"description": "Required for remove_files. The exact file URLs shown in the Folder's latest fetch output."
													},
													"title": {
														"type": "string",
														"description": "Required for add_subfolder. The new Folder's title."
													}
												},
												"additionalProperties": false,
												"required": ["folder_id", "command"],
												"description": "The parameters for the update_folder tool. Update an existing Notion Folder with an explicit Folder operation.\n\n- Use add_files with file upload IDs returned by the upload tools.\n- Fetch the Folder first, then use remove_files with the exact file URLs from\n  that fetch result.\n- Use add_subfolder to create and insert a new nested Folder.\n\nUse exactly one command shape; do not mix their arguments:\n- {\"command\":\"add_files\",\"file_upload_ids\":[\"...\"]}\n- {\"command\":\"remove_files\",\"file_urls\":[\"...\"]}\n- {\"command\":\"add_subfolder\",\"title\":\"...\"}\n\nThe Folder ID may be provided with or without dashes."
											}
										},
										"required": ["type", "update_folder"],
										"title": "Update Folder"
									},
									{
										"type": "object",
										"properties": {
											"type": {
												"type": "string",
												"const": "update_data_source",
												"description": "The name of the tool to run."
											},
											"update_data_source": {
												"type": "object",
												"properties": {
													"data_source_id": {
														"type": "string",
														"description": "The data source to update. Accepts a collection:// URI from <data-source> tags, a bare UUID, or a database ID (only if the database has a single data source)."
													},
													"statements": {
														"type": "string",
														"description": "Semicolon-separated SQL DDL statements to update the schema. Supports ADD COLUMN, DROP COLUMN, RENAME COLUMN, and ALTER COLUMN SET.\n\nProperty type syntax:\n- Simple: TITLE, RICH_TEXT, DATE, PEOPLE, CHECKBOX, URL, EMAIL, PHONE_NUMBER, FILES\n- SELECT('opt':color, ...) / MULTI_SELECT('opt':color, ...)\n- STATUS('Backlog':gray:to_do, 'Building':blue:in_progress, 'Shipped':green:complete); groups are to_do, in_progress, complete\n- NUMBER [FORMAT 'dollar'] / FORMULA('expression')\n- RELATION('ds') for a one-way relation\n- RELATION('ds', DUAL) for a two-way relation\n- RELATION('ds', DUAL 'Children') with a synced property name\n- RELATION('ds', DUAL 'Children' 'children') with a synced name and synced_id (for self-relations)\n- ROLLUP('rel_prop', 'target_prop', 'function')\n- UNIQUE_ID [PREFIX 'X'] / CREATED_TIME / LAST_EDITED_TIME\n- Any column: COMMENT 'description text'\nColors: default, gray, brown, orange, yellow, green, blue, purple, pink, red.\n\nExamples:\n- <example>ADD COLUMN \"Priority\" SELECT('High':red, 'Medium':yellow, 'Low':green); ADD COLUMN \"Due Date\" DATE</example>\n- <example>RENAME COLUMN \"Status\" TO \"Project Status\"</example>\n- <example>DROP COLUMN \"Old Property\"</example>\n- For a self-relation, add both relation properties in one call with matching DUAL names and IDs, such as <example>ADD COLUMN \"Parent\" RELATION('ds', DUAL 'Children' 'children')</example>."
													},
													"title": {
														"type": "string",
														"description": "The new title of the data source."
													},
													"description": {
														"type": "string",
														"description": "The new description of the data source."
													},
													"is_inline": {
														"type": "boolean",
														"description": "Whether the database should display inline (true) or as full page (false). Only applicable for single-source databases."
													},
													"in_trash": {
														"type": "boolean",
														"description": "Move data source to trash. Cannot be undone without Notion UI."
													},
													"page_layout": {
														"type": "object",
														"description": "Replaces the data source's page layout. Refer to existing properties by name. See notion://docs/database-page-layouts. Example: <example>{\"main\":[{\"type\":\"title\",\"pinnedProperties\":[\"Status\",\"Owner\"]},{\"type\":\"editor\"},{\"type\":\"discussions\"}],\"sidebar\":[{\"type\":\"properties\"}]}</example>.",
														"required": ["main"],
														"additionalProperties": false,
														"properties": {
															"main": {
																"type": "array",
																"description": "Main area modules in order. Include a title, an editor (unless the layout has a tab), and discussions.",
																"items": {
																	"oneOf": [
																		{
																			"type": "object",
																			"required": ["type"],
																			"additionalProperties": false,
																			"properties": {
																				"type": {
																					"type": "string",
																					"enum": [
																						"cover",
																						"editor",
																						"discussions",
																						"relations",
																						"backlinks",
																						"page_sections",
																						"bottom_controls"
																					],
																					"description": "The module type."
																				}
																			}
																		},
																		{
																			"$ref": "#/components/schemas/pageLayoutPropertiesModule"
																		},
																		{
																			"$ref": "#/components/schemas/pageLayoutPropertiesSectionsModule"
																		},
																		{
																			"type": "object",
																			"required": ["type"],
																			"additionalProperties": false,
																			"properties": {
																				"type": {
																					"type": "string",
																					"enum": ["title"],
																					"description": "The module type."
																				},
																				"pinnedProperties": {
																					"type": "array",
																					"items": {
																						"type": "string"
																					},
																					"description": "Property names to show under the title."
																				},
																				"propertyLabels": {
																					"type": "string",
																					"enum": ["show", "hide"],
																					"description": "Whether pinned properties show their names."
																				}
																			}
																		},
																		{
																			"$ref": "#/components/schemas/pageLayoutPropertyModule"
																		},
																		{
																			"type": "object",
																			"required": ["type", "relation"],
																			"additionalProperties": false,
																			"properties": {
																				"type": {
																					"type": "string",
																					"enum": ["views"],
																					"description": "The module type."
																				},
																				"relation": {
																					"type": "string",
																					"description": "The name of a two-way relation property whose related pages show as a view."
																				}
																			}
																		}
																	]
																}
															},
															"sidebar": {
																"type": "array",
																"description": "Sidebar modules in order. Only properties and property modules are allowed.",
																"items": {
																	"oneOf": [
																		{
																			"$ref": "#/components/schemas/pageLayoutPropertiesModule"
																		},
																		{
																			"$ref": "#/components/schemas/pageLayoutPropertiesSectionsModule"
																		},
																		{
																			"$ref": "#/components/schemas/pageLayoutPropertyModule"
																		}
																	]
																}
															},
															"tab": {
																"type": "object",
																"description": "Puts page content in a tab next to database views. Omit for a simple layout.",
																"required": ["modules"],
																"additionalProperties": false,
																"properties": {
																	"id": {
																		"type": "string",
																		"description": "The existing tab ID from fetch. Omit for a new tab. Starts with view_tab_."
																	},
																	"modules": {
																		"type": "array",
																		"description": "Tab modules in order. Must include an editor. Only properties, property modules, discussions, relations, and the editor are allowed.",
																		"items": {
																			"oneOf": [
																				{
																					"type": "object",
																					"required": ["type"],
																					"additionalProperties": false,
																					"properties": {
																						"type": {
																							"type": "string",
																							"enum": [
																								"editor",
																								"discussions",
																								"relations"
																							],
																							"description": "The module type."
																						}
																					}
																				},
																				{
																					"$ref": "#/components/schemas/pageLayoutPropertiesModule"
																				},
																				{
																					"$ref": "#/components/schemas/pageLayoutPropertiesSectionsModule"
																				},
																				{
																					"$ref": "#/components/schemas/pageLayoutPropertyModule"
																				}
																			]
																		}
																	}
																}
															},
															"format": {
																"type": "object",
																"description": "Page display options.",
																"additionalProperties": false,
																"properties": {
																	"propertyIcons": {
																		"type": "string",
																		"enum": ["show", "hide"],
																		"description": "Whether property icons show on the page."
																	},
																	"pageFullWidth": {
																		"type": "boolean",
																		"description": "Whether pages open at full width."
																	}
																}
															}
														}
													}
												},
												"required": ["data_source_id"],
												"description": "The parameters for the update_data_source tool. Update a Notion data source's schema, title, attributes, or page layout. Schema\nchanges use SQL DDL statements.\nReturns Markdown showing updated structure and schema.\n\nAccepts a data source ID (collection ID from fetch response's <data-source> tag)\nor a single-source database ID. Multi-source databases require the specific\ndata source ID.\n\nThe statements param accepts semicolon-separated DDL statements:\n- ADD COLUMN \"Name\" <type> - add a new property\n- DROP COLUMN \"Name\" - remove a property\n- RENAME COLUMN \"Old\" TO \"New\" - rename a property\n- ALTER COLUMN \"Name\" SET <type> - change type/options. For SELECT, MULTI_SELECT,\n  and STATUS, list every option to keep; omitted options are removed. Existing\n  options keep their id and can be recolored. STATUS options keep their group\n  when the group is omitted.\n\nThe page_layout param replaces the layout every page in the data source uses\n(pinned properties, sidebar, property sections, and a content tab next to\nviews). Fetch the data source first to get the current layout, then edit it.\nSee notion://docs/database-page-layouts for the format.\n\nNotes: Cannot delete/create title properties. Max one unique_id property.\nCannot update synced databases. Use \"fetch\" first to see current schema\nand get the data source ID from <data-source url=\"collection://...\"> tags."
											}
										},
										"required": ["type", "update_data_source"],
										"title": "Update Data Source"
									},
									{
										"type": "object",
										"properties": {
											"type": {
												"type": "string",
												"const": "create_comment",
												"description": "The name of the tool to run."
											},
											"create_comment": {
												"allOf": [
													{
														"type": "object",
														"properties": {
															"page_id": {
																"type": "string",
																"description": "The page ID, with or without dashes, or a Notion page URL."
															},
															"reply_to_comment_id": {
																"type": "string",
																"description": "The ID of the comment to reply to."
															},
															"discussion_id": {
																"type": "string",
																"description": "The ID or URL of an existing discussion to reply to (e.g., discussion://pageId/blockId/discussionId)."
															},
															"selection_with_ellipsis": {
																"type": "string",
																"description": "Unique content snippet: ~10 characters from each end, joined by \"...\". A match within one block's text gets an inline comment on that text; otherwise, comment on the block where the match starts. No match returns an error."
															}
														},
														"required": ["page_id"]
													},
													{
														"oneOf": [
															{
																"type": "object",
																"properties": {
																	"rich_text": {
																		"type": "array",
																		"items": {
																			"$ref": "#/components/schemas/richTextItemRequest"
																		},
																		"maxItems": 100,
																		"description": "An array of rich text objects that represent the content of the comment. Provide exactly one of rich_text or markdown."
																	}
																},
																"required": ["rich_text"]
															},
															{
																"type": "object",
																"properties": {
																	"markdown": {
																		"type": "string",
																		"description": "The content of the comment as a Markdown string. Provide exactly one of markdown or rich_text. For exact syntax, read the MCP resource `notion://docs/enhanced-markdown-spec` through your MCP client's resource-reading interface, or call the Notion \"fetch\" tool with this URI if your client does not support reading MCP resources. Do NOT pass this URI to any other URL-fetching tool. Use only the Rich text types and Mentions syntax that comments support. Comments support inline formatting (bold, italic, strikethrough, underline, code, links), inline math using $`Equation`$, and user/page/database/date mention tags such as <mention-date start=\"YYYY-MM-DD\"/>. To attach a file created by create-file-upload or create-attachment, include its returned suggested_markdown on a separate line; up to three file attachments are supported. Do not use UI shortcuts like @today, @name, [[page]], or autocomplete-style emoji syntax; those are editor affordances, not markdown syntax. Mention tags must include a real url where required by the spec. Other block-level Markdown such as fenced code blocks, headings, lists, tables, and blockquotes is stored as plain comment text rather than rendered as blocks. Example: <example>Looks good.</example>."
																	}
																},
																"required": ["markdown"]
															}
														]
													}
												],
												"description": "The parameters for the create_comment tool. Add a comment to a page or specific content.\n\nProvide `page_id` to identify the page, then choose ONE targeting mode:\n- `page_id` alone: Add a top-level comment to the page\n- `page_id` + `selection_with_ellipsis`: Highlight selected text within one block, or comment on the block where the match starts if no inline highlight can be resolved. No matching content returns an error.\n- `reply_to_comment_id`: Reply to a comment using its `id` from get-comments (page_id is still required)\n- `discussion_id`: Reply to an existing discussion (page_id is still required)\n\nProvide exactly one content format:\n- `markdown`: Preferred. Inline Notion-flavored Markdown for comment text. For exact syntax, read the MCP resource `notion://docs/enhanced-markdown-spec` through your MCP client's resource-reading interface, or call the Notion \"fetch\" tool with this URI if your client does not support reading MCP resources. Do NOT pass this URI to any other URL-fetching tool. Use only the Rich text types and Mentions syntax that comments support. Comments support inline formatting (bold, italic, strikethrough, underline, code, links), inline math using `$`Equation`$`, and user/page/database/date mention tags such as `<mention-date start=\"YYYY-MM-DD\"/>`. To attach a file created by `create-file-upload` or `create-attachment`, include its returned `suggested_markdown` on a separate line; up to three file attachments are supported. Do not use UI shortcuts like `@today`, `@name`, `[[page]]`, or autocomplete-style emoji syntax; those are editor affordances, not markdown syntax. Mention tags must include a real `url` where required by the spec. Other block-level Markdown such as headings, lists, tables, blockquotes, and fenced code blocks is stored as plain comment text rather than rendered as blocks.\n- `rich_text`: Array of rich text objects."
											}
										},
										"required": ["type", "create_comment"],
										"title": "Create Comment"
									},
									{
										"type": "object",
										"properties": {
											"type": {
												"type": "string",
												"const": "get_comments",
												"description": "The name of the tool to run."
											},
											"get_comments": {
												"type": "object",
												"properties": {
													"page_id": {
														"type": "string",
														"description": "The page ID, with or without dashes, or a Notion page URL."
													},
													"include_resolved": {
														"type": "boolean",
														"description": "Include resolved discussions in the response. Defaults to false."
													},
													"include_all_blocks": {
														"type": "boolean",
														"description": "Include discussions on child blocks, not just page-level discussions. Defaults to false."
													},
													"discussion_id": {
														"type": "string",
														"description": "Fetch a specific discussion by ID or discussion URL (e.g., discussion://pageId/blockId/discussionId)."
													}
												},
												"required": ["page_id"],
												"description": "The parameters for the get_comments tool. Get comments and discussions from a Notion page.\n\nReturns discussions with full comment content in XML format.\nBy default, returns page-level discussions only.\nOn supported Business connections, pending suggested edits use `kind=\"suggested_edit\"` and their\n`discussion://` URL can be passed to `get_suggested_edit`. Resolved suggestions stay retired.\nCheck `suggested_edits_status` to distinguish an empty result from unavailable suggestion discovery.\nComments you wrote have `by-you=\"true\"`.\n\nTip: Use the `fetch` tool with `include_discussions: true` first to see where discussions\nare anchored in the page content, then use this tool to retrieve full discussion threads.\nThe `discussion://` URLs in the fetch output match the discussion IDs returned here.\n\nParameters:\n- `include_all_blocks`: Include discussions on child blocks (default: false)\n- `include_resolved`: Include resolved discussions (default: false)\n- `discussion_id`: Fetch a specific discussion by ID or URL\n\n<example>{\"page_id\": \"page-uuid\"}</example>\n<example>{\"page_id\": \"page-uuid\", \"include_all_blocks\": true}</example>\n<example>{\"page_id\": \"page-uuid\", \"discussion_id\": \"discussion://pageId/blockId/discussionId\"}</example>"
											}
										},
										"required": ["type", "get_comments"],
										"title": "Get Comments"
									},
									{
										"type": "object",
										"properties": {
											"type": {
												"type": "string",
												"const": "update_comment",
												"description": "The name of the tool to run."
											},
											"update_comment": {
												"type": "object",
												"properties": {
													"comment_id": {
														"type": "string",
														"description": "The comment ID, with or without dashes. Use the id of a <comment> from get_comments, or the id returned by create_comment."
													},
													"markdown": {
														"type": "string",
														"description": "The full replacement text for the comment, as inline Markdown. It replaces the whole comment, so include any text you want to keep. Use the same inline syntax as create_comment. Lists, headings, and other block-level Markdown are not supported in comments."
													}
												},
												"additionalProperties": false,
												"required": ["comment_id", "markdown"],
												"description": "The parameters for the update_comment tool. Replace the text of a comment you wrote. Get the comment ID from get_comments or create_comment. The new text replaces the whole comment, so send the full corrected text. To fix a comment, update it instead of deleting it and posting a new one. You can only edit your own comments."
											}
										},
										"required": ["type", "update_comment"],
										"title": "Update Comment"
									},
									{
										"type": "object",
										"properties": {
											"type": {
												"type": "string",
												"const": "delete_comment",
												"description": "The name of the tool to run."
											},
											"delete_comment": {
												"type": "object",
												"properties": {
													"comment_id": {
														"type": "string",
														"description": "The comment ID, with or without dashes. Use the id of a <comment> from get_comments, or the id returned by create_comment."
													}
												},
												"additionalProperties": false,
												"required": ["comment_id"],
												"description": "The parameters for the delete_comment tool. Delete a comment you wrote. Get the comment ID from get_comments or create_comment. If it is the last comment in its discussion, the discussion is removed too. Use this only when the user asks to delete a comment; to fix a comment, use update_comment instead. You can only delete your own comments."
											}
										},
										"required": ["type", "delete_comment"],
										"title": "Delete Comment"
									},
									{
										"type": "object",
										"properties": {
											"type": {
												"type": "string",
												"const": "set_discussion_resolved",
												"description": "The name of the tool to run."
											},
											"set_discussion_resolved": {
												"type": "object",
												"properties": {
													"discussion_id": {
														"type": "string",
														"description": "The discussion ID or URL, such as the id of a <discussion> from get_comments (discussion://pageId/blockId/discussionId) or the discussion_id returned by create_comment."
													},
													"resolved": {
														"type": "boolean",
														"description": "True to resolve the discussion, false to reopen it."
													}
												},
												"additionalProperties": false,
												"required": ["discussion_id", "resolved"],
												"description": "The parameters for the set_discussion_resolved tool. Resolve or reopen a comment discussion. Get the discussion ID from get_comments or create_comment. Use this tool only when a human explicitly asks to resolve that discussion. Do not infer resolution from addressing feedback, replying, completing related work, passing checks, or changing task status."
											}
										},
										"required": ["type", "set_discussion_resolved"],
										"title": "Set Discussion Resolved"
									},
									{
										"type": "object",
										"properties": {
											"type": {
												"type": "string",
												"const": "set_comment_reaction",
												"description": "The name of the tool to run."
											},
											"set_comment_reaction": {
												"type": "object",
												"properties": {
													"comment_id": {
														"type": "string",
														"description": "The comment ID, with or without dashes. Use the id of a <comment> from get_comments, or the id returned by create_comment."
													},
													"emoji": {
														"type": "string",
														"examples": ["👍"],
														"description": "One standard Unicode emoji."
													},
													"reacted": {
														"type": "boolean",
														"description": "True to add the reaction, false to remove it."
													}
												},
												"additionalProperties": false,
												"required": ["comment_id", "emoji", "reacted"],
												"description": "The parameters for the set_comment_reaction tool. Add or remove your emoji reaction on a comment. Get the comment ID from get_comments or create_comment. Safe to repeat: setting the same state twice changes nothing."
											}
										},
										"required": ["type", "set_comment_reaction"],
										"title": "Set Comment Reaction"
									},
									{
										"type": "object",
										"properties": {
											"type": {
												"type": "string",
												"const": "create_suggested_edit",
												"description": "The name of the tool to run."
											},
											"create_suggested_edit": {
												"type": "object",
												"required": ["page_id", "old_text", "new_text"],
												"additionalProperties": false,
												"properties": {
													"page_id": {
														"type": "string",
														"description": "Page UUID or URL containing the target text."
													},
													"old_text": {
														"type": "string",
														"description": "Unique, non-empty exact text copied from the accepted Notion Markdown returned by fetch."
													},
													"new_text": {
														"type": "string",
														"description": "Proposed Notion Markdown. With replace, it replaces old_text; use an empty string to suggest deletion. With insert_before or insert_after, it is only the text to insert and old_text remains unchanged."
													},
													"mode": {
														"type": "string",
														"enum": [
															"replace",
															"insert_before",
															"insert_after"
														],
														"description": "How to apply new_text relative to old_text. Defaults to replace."
													},
													"property_name": {
														"type": "string",
														"description": "Exact page title or database title/text property name. Omit for page body text."
													},
													"comment": {
														"type": "string",
														"description": "Optional inline Markdown comment that starts the suggestion thread."
													}
												},
												"description": "The parameters for the create_suggested_edit tool. Propose one precise, reviewable change without changing accepted page content. Copy old_text exactly from fetch, use one suggestion per localized change, and use get_suggested_edit to inspect it before any later resolution.\n\nIf availability is not already known for this connection, call get_tool_access with {} before using this tool. Reuse the returned access map across tools; check the status and restricted_parameters."
											}
										},
										"required": ["type", "create_suggested_edit"],
										"title": "Create Suggested Edit"
									},
									{
										"type": "object",
										"properties": {
											"type": {
												"type": "string",
												"const": "get_suggested_edit",
												"description": "The name of the tool to run."
											},
											"get_suggested_edit": {
												"type": "object",
												"required": ["suggested_edit_url"],
												"additionalProperties": false,
												"properties": {
													"suggested_edit_url": {
														"type": "string",
														"description": "Pending suggested-edit discussion URL returned by get_comments or create_suggested_edit."
													}
												},
												"description": "The parameters for the get_suggested_edit tool. Read the exact before-and-after diff and currently allowed actions for one pending suggested edit. Call this before deciding whether to accept or reject it.\n\nIf availability is not already known for this connection, call get_tool_access with {} before using this tool. Reuse the returned access map across tools; check the status and restricted_parameters."
											}
										},
										"required": ["type", "get_suggested_edit"],
										"title": "Get Suggested Edit"
									},
									{
										"type": "object",
										"properties": {
											"type": {
												"type": "string",
												"const": "resolve_suggested_edit",
												"description": "The name of the tool to run."
											},
											"resolve_suggested_edit": {
												"type": "object",
												"required": ["suggested_edit_url", "action"],
												"additionalProperties": false,
												"properties": {
													"suggested_edit_url": {
														"type": "string",
														"description": "Pending suggested-edit discussion URL returned by get_comments or create_suggested_edit."
													},
													"action": {
														"type": "string",
														"enum": ["accept", "reject"],
														"description": "Whether to apply or discard the suggestion."
													}
												},
												"description": "The parameters for the resolve_suggested_edit tool. Accept or reject one pending suggested edit. Use the exact suggested_edit_url, inspect it with get_suggested_edit first, and call this only after the user explicitly chooses accept or reject.\n\nIf availability is not already known for this connection, call get_tool_access with {} before using this tool. Reuse the returned access map across tools; check the status and restricted_parameters."
											}
										},
										"required": ["type", "resolve_suggested_edit"],
										"title": "Resolve Suggested Edit"
									},
									{
										"type": "object",
										"properties": {
											"type": {
												"type": "string",
												"const": "get_formula_value",
												"description": "The name of the tool to run."
											},
											"get_formula_value": {
												"type": "object",
												"properties": {
													"page_url": {
														"type": "string",
														"description": "URL of the database row page that has the formula property."
													},
													"property_name": {
														"type": "string",
														"description": "Name of the formula property to evaluate."
													}
												},
												"additionalProperties": false,
												"required": ["page_url", "property_name"],
												"description": "The parameters for the get_formula_value tool. Get the computed value of a formula property for a specific Notion database row page.\n\nIf availability is not already known for this connection, call get_tool_access with {} before using this tool. Reuse the returned access map across tools; check the status and restricted_parameters."
											}
										},
										"required": ["type", "get_formula_value"],
										"title": "Get Formula Value"
									},
									{
										"type": "object",
										"properties": {
											"type": {
												"type": "string",
												"const": "get_rollup_value",
												"description": "The name of the tool to run."
											},
											"get_rollup_value": {
												"type": "object",
												"properties": {
													"url": {
														"type": "string",
														"description": "Rollup-result reference returned on a database row page."
													},
													"page_size": {
														"type": "integer",
														"minimum": 1,
														"maximum": 100,
														"description": "Maximum number of related rows in one result window."
													},
													"start_cursor": {
														"type": "string",
														"description": "Opaque cursor returned by an earlier call."
													}
												},
												"additionalProperties": false,
												"required": ["url"],
												"description": "The parameters for the get_rollup_value tool. Resolve a rollup-result reference into its complete, permission-aware computed value.\n\nIf availability is not already known for this connection, call get_tool_access with {} before using this tool. Reuse the returned access map across tools; check the status and restricted_parameters."
											}
										},
										"required": ["type", "get_rollup_value"],
										"title": "Get Rollup Value"
									},
									{
										"type": "object",
										"properties": {
											"type": {
												"type": "string",
												"const": "get_notifications",
												"description": "The name of the tool to run."
											},
											"get_notifications": {
												"type": "object",
												"properties": {
													"filter": {
														"type": "string",
														"enum": [
															"archived",
															"unread_and_read",
															"unread_only"
														],
														"description": "Which notifications to return."
													},
													"limit": {
														"type": "number",
														"description": "Maximum number of notifications to return. Defaults to 20 and is capped at 100."
													},
													"cursor": {
														"type": "string",
														"description": "Pagination cursor from a previous response."
													},
													"after": {
														"type": "number",
														"minimum": 0,
														"description": "Return notifications strictly after this Unix timestamp in milliseconds."
													},
													"before": {
														"type": "number",
														"minimum": 0,
														"description": "Return notifications strictly before this Unix timestamp in milliseconds."
													}
												},
												"additionalProperties": false,
												"description": "The parameters for the get_notifications tool. Read the current user's Notion notifications, returned newest first.\n\nIf availability is not already known for this connection, call get_tool_access with {} before using this tool. Reuse the returned access map across tools; check the status and restricted_parameters."
											}
										},
										"required": ["type", "get_notifications"],
										"title": "Get Notifications"
									},
									{
										"type": "object",
										"properties": {
											"type": {
												"type": "string",
												"const": "update_notifications",
												"description": "The name of the tool to run."
											},
											"update_notifications": {
												"type": "object",
												"properties": {
													"notification_ids": {
														"type": "array",
														"items": {
															"type": "string"
														},
														"description": "Notification IDs to update, up to 100 per call."
													},
													"action": {
														"type": "string",
														"enum": [
															"markAsRead",
															"markAsUnread",
															"archive",
															"unarchive"
														],
														"description": "The inbox state update to apply."
													}
												},
												"additionalProperties": false,
												"required": ["notification_ids", "action"],
												"description": "The parameters for the update_notifications tool. Change only the current user's notification inbox state: mark notifications as read or unread, or archive or unarchive them. This does not resolve the underlying comment, request, or other work.\n\nIf availability is not already known for this connection, call get_tool_access with {} before using this tool. Reuse the returned access map across tools; check the status and restricted_parameters."
											}
										},
										"required": ["type", "update_notifications"],
										"title": "Update Notifications"
									},
									{
										"type": "object",
										"properties": {
											"type": {
												"type": "string",
												"const": "get_async_task",
												"description": "The name of the tool to run."
											},
											"get_async_task": {
												"type": "object",
												"properties": {
													"task_id": {
														"type": "string",
														"minLength": 1,
														"examples": ["task_abc123"],
														"description": "The ID of the async task to retrieve, as returned in the async_task response of the tool that started it."
													}
												},
												"required": ["task_id"],
												"description": "The parameters for the get_async_task tool. Retrieves the current status of an async task that was started by another tool\n(for example, \"create_pages\" called with \"allow_async\": true).\n\nThe status is one of \"queued\", \"running\", \"retrying\", \"succeeded\", or \"failed\".\nWhen the task has succeeded, the operation's result is included; when it has\nfailed, an error is included instead.\n\nPoll this tool with the \"task_id\" from the original tool's \"async_task\" response.\nWait briefly between polls — the original response includes a suggested backoff.\n\n<examples>\n1. Check a task's status: {\"task_id\": \"task_abc123\"}\n</examples>"
											}
										},
										"required": ["type", "get_async_task"],
										"title": "Get Async Task"
									},
									{
										"type": "object",
										"properties": {
											"type": {
												"type": "string",
												"const": "get_teams",
												"description": "The name of the tool to run."
											},
											"get_teams": {
												"type": "object",
												"properties": {
													"query": {
														"type": "string",
														"minLength": 1,
														"maxLength": 100,
														"description": "Optional search query to filter teams by name (case-insensitive)."
													}
												},
												"description": "The parameters for the get_teams tool. Retrieves a list of teams (teamspaces) in the current workspace. Shows which teams\nexist, user membership status, IDs, names, and roles.\n\nTeams are returned split by membership status and limited to a maximum of\n10 results.\n\n<examples>\n1. List all teams (up to the limit of each type): {}\n\n2. Search for teams by name: {\"query\": \"engineering\"}\n\n3. Find a specific team: {\"query\": \"Product Design\"}\n</examples>"
											}
										},
										"required": ["type", "get_teams"],
										"title": "Get Teams"
									},
									{
										"type": "object",
										"properties": {
											"type": {
												"type": "string",
												"const": "get_groups",
												"description": "The name of the tool to run."
											},
											"get_groups": {
												"type": "object",
												"properties": {
													"query": {
														"type": "string",
														"minLength": 1,
														"maxLength": 100,
														"description": "Optional group name to search for (case-insensitive), or a group ID from a People property value (`space_permission_group-<id>` or the bare ID) to look up that group."
													}
												},
												"additionalProperties": false,
												"description": "The parameters for the get_groups tool. Retrieves permission groups in the current workspace that you can see, with their\nIDs and names.\n\nPeople properties reference a group as `space_permission_group-<id>`. Use this tool\nto find the name of a group in a People property value, or to find a group by name\nbefore setting it in a People property.\n\nListings are sorted by name and searches return the closest matches first. Results\nare limited to a maximum of 25 groups.\n\n<examples>\n1. List groups (up to the limit): {}\n\n2. Search for groups by name: {\"query\": \"engineering\"}\n\n3. Look up a group from a People property value: {\"query\": \"space_permission_group-141083e9-5e66-4c8f-8a38-bce5762903c2\"}\n</examples>"
											}
										},
										"required": ["type", "get_groups"],
										"title": "Get Groups"
									},
									{
										"type": "object",
										"properties": {
											"type": {
												"type": "string",
												"const": "get_users",
												"description": "The name of the tool to run."
											},
											"get_users": {
												"type": "object",
												"properties": {
													"query": {
														"type": "string",
														"minLength": 1,
														"maxLength": 100,
														"description": "Optional search query to filter users by name or email (case-insensitive)."
													},
													"start_cursor": {
														"type": "string",
														"minLength": 1,
														"description": "Cursor for pagination. Use the next_cursor value from the previous response to get the next page."
													},
													"page_size": {
														"type": "integer",
														"minimum": 1,
														"maximum": 100,
														"description": "Number of users to return per page (1–100; default 100)."
													},
													"user_id": {
														"type": "string",
														"minLength": 1,
														"maxLength": 100,
														"description": "Return only the user matching this ID. Pass \"self\" to fetch the current user."
													}
												},
												"description": "The parameters for the get_users tool. Retrieves a list of users in the current workspace. Shows workspace members\nand guests with their IDs, names, emails (if available), and types (person or bot).\n\nSupports cursor-based pagination to iterate through all users in the workspace.\n\n<examples>\n1. List all users (first page): {}\n\n2. Search for users by name or email: {\"query\": \"john\"}\n\n3. Get next page of results: {\"start_cursor\": \"abc123\"}\n\n4. Set custom page size: {\"page_size\": 20}\n\n5. Fetch a specific user by ID: {\"user_id\": \"00000000-0000-4000-8000-000000000000\"}\n\n6. Fetch the current user: {\"user_id\": \"self\"}\n</examples>"
											}
										},
										"required": ["type", "get_users"],
										"title": "Get Users"
									},
									{
										"type": "object",
										"properties": {
											"type": {
												"type": "string",
												"const": "reply_to_slack_thread",
												"description": "The name of the tool to run."
											},
											"reply_to_slack_thread": {
												"type": "object",
												"properties": {
													"message": {
														"type": "string",
														"minLength": 1,
														"description": "The Slack message to post as a reply in the triggering thread. Use Slack markdown formatting."
													},
													"unfurl_links": {
														"type": "boolean",
														"description": "Whether Slack should unfurl links in the reply. Defaults to true."
													}
												},
												"required": ["message"],
												"description": "The parameters for the reply_to_slack_thread tool. Reply to the Slack thread that triggered the current workflow run.\n\nThis tool is only available to external agent harnesses running from a Slack-triggered\nworkflow with an active Slack connection. It cannot reply to arbitrary Slack channels\nor threads; the destination is fixed to the triggering thread for this workflow run.\nUse Slack markdown formatting in message text."
											}
										},
										"required": ["type", "reply_to_slack_thread"],
										"title": "Reply To Slack Thread"
									},
									{
										"type": "object",
										"properties": {
											"type": {
												"type": "string",
												"const": "answer_question",
												"description": "The name of the tool to run."
											},
											"answer_question": {
												"type": "object",
												"properties": {
													"question": {
														"type": "string",
														"minLength": 1,
														"maxLength": 2000,
														"description": "Question to answer using content from the user's Notion workspace."
													}
												},
												"required": ["question"],
												"description": "The parameters for the answer_question tool. Get a single AI-generated answer to a question using content from the user's\nNotion workspace. This tool does not search connected sources such as Slack,\nGoogle Drive, or GitHub. Returns one concise answer, not a list of results.\n\nUse this when you want a direct answer and don't need to read the underlying\npages yourself. It's faster and far cheaper on tokens than fetching many search\nresults and synthesizing them yourself.\n\nUse search instead if you want a ranked list of results to read, filter, or fetch\nin full, or if you need precise control over which sources inform the answer. If\nan answer isn't enough for the task, fall back to search to retrieve and read the\nfull results.\n\nFree during beta."
											}
										},
										"required": ["type", "answer_question"],
										"title": "Answer Question"
									},
									{
										"type": "object",
										"properties": {
											"type": {
												"type": "string",
												"const": "query_data_sources",
												"description": "The name of the tool to run."
											},
											"query_data_sources": {
												"type": "object",
												"properties": {
													"data": {
														"oneOf": [
															{
																"type": "object",
																"properties": {
																	"data_source_urls": {
																		"type": "array",
																		"items": {
																			"type": "string"
																		},
																		"maxItems": 100,
																		"description": "Notion data source URLs whose SQLite tables are available to the query;\neach data source is exposed as a table named by its URL. Obtain them from the\nfetch tool, in the format: collection://f336d0bc-b841-465b-8045-024475c079dd"
																	},
																	"query": {
																		"type": "string",
																		"description": "Read-only SQLite query to execute against the data sources. Use a data\nsource URL as the table name, e.g. SELECT * FROM \"collection://...\" WHERE ....\nUse only table and column names shown in the fetched `<sqlite-table>` definition;\ndate properties use the expanded column names listed there, not the base name.\nExample: if the fetched schema has a date property `Due`, use `\"date:Due:start\"`, not `\"Due\"`.\nProperties of type `created_time` or `last_edited_time` keep their exact fetched\nbase columns (e.g. `\"Created\"` only if listed). A formula or another property\nwith a date-looking name or result does not automatically have `date:` columns\nor become queryable. Copy actual fetched columns, not property labels.\nInclude every needed filter in WHERE (filters on views of the data source are\nnot automatically applied). For time comparisons or ordering, normalize text\ntimestamps with datetime(...) or date(...).\nSQL text values can omit rich-text mentions and formatting, and links can\nlose their destination. Use faithful rows mode or fetch the page before rewriting\na rich-text property."
																	},
																	"mode": {
																		"type": "string",
																		"const": "sql",
																		"description": "Optional mode parameter. Defaults to 'sql' if not specified. SQL mode does not accept is_archived; that parameter belongs only to view mode."
																	},
																	"params": {
																		"type": "array",
																		"items": {
																			"oneOf": [
																				{
																					"type": "string"
																				},
																				{
																					"type": "number"
																				},
																				{
																					"type": "boolean"
																				},
																				{
																					"type": "null"
																				}
																			]
																		},
																		"maxItems": 100,
																		"description": "Positional parameters bound to `?` placeholders in the query. Prefer\nparameterized queries over string interpolation. Use \"__YES__\" for checked\ncheckboxes and \"__NO__\" for unchecked checkboxes."
																	}
																},
																"additionalProperties": false,
																"required": ["data_source_urls", "query"],
																"title": "Sql"
															},
															{
																"type": "object",
																"properties": {
																	"mode": {
																		"type": "string",
																		"const": "view",
																		"description": "Mode for executing a database view's existing query"
																	},
																	"view_url": {
																		"type": "string",
																		"description": "URL of a specific database view to query.\nExample: https://www.notion.so/workspace/db-id?v=view-id"
																	},
																	"start_cursor": {
																		"type": "string",
																		"minLength": 1,
																		"maxLength": 200,
																		"description": "Cursor for pagination. Use the next_cursor value from the previous response to get the next page."
																	},
																	"page_size": {
																		"type": "integer",
																		"minimum": 1,
																		"maximum": 100,
																		"description": "Number of rows to return per page (default: 100, max: 100)."
																	},
																	"is_archived": {
																		"type": "boolean",
																		"description": "Optional archive selector. Omitted or false queries non-archived rows only; true queries archived rows only."
																	}
																},
																"additionalProperties": false,
																"required": ["mode", "view_url"],
																"title": "View"
															},
															{
																"type": "object",
																"properties": {
																	"mode": {
																		"type": "string",
																		"const": "rows",
																		"description": "Return data source rows with rich-text mentions, links, formatting, dates, and equations preserved."
																	},
																	"data_source_url": {
																		"type": "string",
																		"description": "One Notion data source URL obtained from a fetch result."
																	},
																	"filter": {
																		"$ref": "#/components/schemas/workflowViewFilter",
																		"description": "Structured filter using exact property names from the data source schema. Supports an outer Boolean group plus one nested group level."
																	},
																	"sort": {
																		"type": "array",
																		"items": {
																			"type": "object",
																			"properties": {
																				"property": {
																					"type": "string",
																					"description": "Exact data source property name to sort."
																				},
																				"direction": {
																					"type": "string",
																					"enum": ["ascending", "descending"],
																					"description": "One of: `ascending`, `descending`"
																				}
																			},
																			"additionalProperties": false,
																			"required": ["property", "direction"]
																		},
																		"maxItems": 100,
																		"description": "Structured property sorts applied in order."
																	},
																	"limit": {
																		"type": "integer",
																		"minimum": 1,
																		"maximum": 100,
																		"description": "Number of rows to return (default: 50, max: 100)."
																	}
																},
																"additionalProperties": false,
																"required": ["mode", "data_source_url"],
																"title": "Rows"
															}
														],
														"description": "Mode parameter reference and examples.\n\nPut `mode`, `query`, `data_source_urls`, `data_source_url`, `params`, `limit`, filters (`filter`), sorts (`sort`), and view arguments (`view_url`, `start_cursor`, `page_size`, `is_archived`) inside `data`, never at the tool-argument root.\nAll examples below are complete tool arguments with exactly one outer `data` wrapper. Pass them as shown; do not add another wrapper.\n\nSQL mode:\n- Use single quotes for SQL string values, such as `\"Status\" = 'Done'`. Use double quotes for table and column names. In SQL, `''` is an empty string.\n- Prefer `?` placeholders for values. For text values, the `params` array uses JSON strings, so `[\"\"]` passes an empty string and `[\"__YES__\"]` passes a checked checkbox value. Do not add SQL quote marks around a bound value.\n- Checkbox SQL values: `'__YES__'` means checked; `'__NO__'` means unchecked.\n\nRows mode:\nReturn up to 100 rows with faithful rich-text property values and optional structured filters and sorts.\n\nExample:\n<example>{\"data\":{\"mode\":\"rows\",\"data_source_url\":\"collection://f336d0bc-b841-465b-8045-024475c079dd\",\"filter\":{\"type\":\"group\",\"operator\":\"and\",\"filters\":[{\"type\":\"property\",\"property\":\"Status\",\"propertyType\":\"select\",\"operator\":\"enum_is\",\"value\":{\"type\":\"exact\",\"value\":\"In Progress\"}}]},\"limit\":20}}</example>\n\nExamples:\n- Simple SQL: <example>{\"data\":{\"data_source_urls\":[\"collection://f336d0bc-b841-465b-8045-024475c079dd\"],\"query\":\"SELECT * FROM [collection://f336d0bc-b841-465b-8045-024475c079dd] LIMIT 10\"}}</example>\n- SQL parameters: <example>{\"data\":{\"mode\":\"sql\",\"data_source_urls\":[\"collection://f336d0bc-b841-465b-8045-024475c079dd\"],\"query\":\"SELECT * FROM [collection://f336d0bc-b841-465b-8045-024475c079dd] WHERE Status = ? AND Priority = ?\",\"params\":[\"In Progress\",\"High\"]}}</example>\n- Checkbox query: <example>{\"data\":{\"data_source_urls\":[\"collection://f336d0bc-b841-465b-8045-024475c079dd\"],\"query\":\"SELECT * FROM [collection://f336d0bc-b841-465b-8045-024475c079dd] WHERE Completed = ?\",\"params\":[\"__YES__\"]}}</example>\n\nView mode:\nExecute a specific database view's query with its filters and sorts.\nOmit \"is_archived\" or set it to false for non-archived rows. Set\n\"is_archived\": true to apply the view inside the archived partition.\nWhen the response has \"has_more\": true, pass its \"next_cursor\" as\n\"start_cursor\" in a follow-up view-mode request with the same \"is_archived\"\nvalue.\n\nExample:\n<example>{\"data\":{\"mode\":\"view\",\"view_url\":\"https://www.notion.so/f336d0bcb841465b8045024475c079dd?v=0123456789abcdef0123456789abcdef\",\"is_archived\":false}}</example>\n"
													}
												},
												"required": ["data"],
												"description": "The parameters for the query_data_sources tool. Query data source rows, SQL, or a saved view.\n\nUse the required top-level `data` object. Do not pass query parameters at the top level.\n\nIf availability is not already known for this connection, call get_tool_access with {} before using this tool. Reuse the returned access map across tools; check the status and restricted_parameters.\n\nFirst fetch every data source's schema and collection:// URL.\n\nMissing-column recovery: try a schema-backed error suggestion or refetch. If correction fails, next call MUST be fetch, NOT SQL, even with new hints. Rebuild from current `<sqlite-table>`; never guess names/IDs.\n\nModes (default: sql):\n- rows preserves mentions, links, formatting, dates, and equations. Use before rich-text repairs/rewrites.\n- sql runs read-only SQLite.\n  No `VALUES`; inline rows: `WITH \"ids\"(\"x\") AS (SELECT 'a' UNION ALL SELECT 'b')`.\n  Use only table/column names in fetched `<sqlite-table>`, never property IDs. Schema keys name properties; schema/view listings (e.g. `displayProperties`) may be unqueryable. Formula/rollup columns must be listed; otherwise use rows/fetch.\n  System `url`/`createdTime` are columns; other metadata must be listed. Never guess `Name`, `Title`, `page_id`, `rowid`, `lastEditedTime`.\n  User `url`/`id` use `userDefined:` columns (e.g. `\"userDefined:url\"`).\n  Date properties expand to `date:<Name>:start`, `:end`, `:is_datetime`; `created_time` keeps its base name.\n  Bind untrusted values with `?` and `params`. Include needed filters; view filters don't apply.\n  SQL may omit mentions/formatting and link destinations. This is not proof of corrupt properties.\n- view runs saved filters/sorts. is_archived defaults false (active); true selects archived rows. If has_more, pass next_cursor as start_cursor with the same is_archived.\n\nView mode has no tool-specific plan quota. SQL is unlimited on Business and Enterprise with Notion AI. Other plans have a shared workspace limit for single-data-source SQL and cannot query multiple data sources at once."
											}
										},
										"required": ["type", "query_data_sources"],
										"title": "Query Data Sources"
									},
									{
										"type": "object",
										"properties": {
											"type": {
												"type": "string",
												"const": "query_multiple_data_sources",
												"description": "The name of the tool to run."
											},
											"query_multiple_data_sources": {
												"type": "object",
												"properties": {
													"query": {
														"type": "string",
														"description": "Read-only SQLite query to execute against the data sources. Use a data\nsource URL as the table name, e.g. SELECT * FROM \"collection://...\" WHERE ....\nUse only table and column names shown in the fetched `<sqlite-table>` definition;\ndate properties use the expanded column names listed there, not the base name.\nExample: if the fetched schema has a date property `Due`, use `\"date:Due:start\"`, not `\"Due\"`.\nProperties of type `created_time` or `last_edited_time` keep their exact fetched\nbase columns (e.g. `\"Created\"` only if listed). A formula or another property\nwith a date-looking name or result does not automatically have `date:` columns\nor become queryable. Copy actual fetched columns, not property labels.\nInclude every needed filter in WHERE (filters on views of the data source are\nnot automatically applied). For time comparisons or ordering, normalize text\ntimestamps with datetime(...) or date(...).\nSQL text values can omit rich-text mentions and formatting, and links can\nlose their destination. Use faithful rows mode or fetch the page before rewriting\na rich-text property."
													},
													"data_source_urls": {
														"type": "array",
														"items": {
															"type": "string"
														},
														"maxItems": 100,
														"minItems": 2,
														"description": "Notion data source URLs whose SQLite tables are available to the query;\neach data source is exposed as a table named by its URL. Obtain them from the\nfetch tool, in the format: collection://f336d0bc-b841-465b-8045-024475c079dd"
													},
													"params": {
														"type": "array",
														"items": {
															"oneOf": [
																{
																	"type": "string"
																},
																{
																	"type": "number"
																},
																{
																	"type": "boolean"
																},
																{
																	"type": "null"
																}
															]
														},
														"maxItems": 100,
														"description": "Positional parameters bound to `?` placeholders in the query. Prefer\nparameterized queries over string interpolation. Use \"__YES__\" for checked\ncheckboxes and \"__NO__\" for unchecked checkboxes."
													},
													"mode": {
														"type": "string",
														"const": "sql",
														"description": "Optional SQL mode marker. This tool only supports SQL queries."
													}
												},
												"additionalProperties": false,
												"required": ["query", "data_source_urls"],
												"description": "The parameters for the query_multiple_data_sources tool. Query data across multiple Notion data sources using read-only SQLite SQL.\n\nIf availability is not already known for this connection, call get_tool_access with {} before using this tool. Reuse the returned access map across tools; check the status and restricted_parameters.\n\nUse this tool for JOINs, UNIONs, comparisons, and aggregations that need two or more data sources. Queries across multiple data sources require a Business or Enterprise plan with Notion AI. Use query_data_sources instead when you need one data source or a saved database view.\n\nPrerequisites:\n1. Use the \"fetch\" tool first to get each data source's schema and collection:// URL.\n2. Data source URLs are found in <data-source url=\"...\"> tags in fetch results.\n\nSQL:\n- Use each collection:// URL as a quoted SQLite table name in the query.\n- Bind untrusted values with ? placeholders and params; do not interpolate them into SQL.\n- Include every needed filter in WHERE. Saved-view filters and sorts are not automatically applied.\n- Checkbox values: use \"__YES__\" for checked and \"__NO__\" for unchecked.\n- Date properties expand to `date:<Name>:start`, `:end`, `:is_datetime`; `created_time` keeps its base name.\n\nReturns matching rows, the queried data source IDs, and whether results were truncated."
											}
										},
										"required": ["type", "query_multiple_data_sources"],
										"title": "Query Multiple Data Sources"
									},
									{
										"type": "object",
										"properties": {
											"type": {
												"type": "string",
												"const": "query_meeting_notes",
												"description": "The name of the tool to run."
											},
											"query_meeting_notes": {
												"type": "object",
												"properties": {
													"filter": {
														"type": "object",
														"properties": {
															"operator": {
																"type": "string",
																"enum": ["and", "or"],
																"description": "Operator for combinator filters."
															},
															"filters": {
																"type": "array",
																"items": {
																	"oneOf": [
																		{
																			"$ref": "#/components/schemas/meetingNotesPropertyFilter"
																		},
																		{
																			"type": "object",
																			"properties": {
																				"operator": {
																					"type": "string",
																					"enum": ["and", "or"],
																					"description": "Whether every child must match, or any of them."
																				},
																				"filters": {
																					"type": "array",
																					"items": {
																						"$ref": "#/components/schemas/meetingNotesPropertyFilter"
																					},
																					"maxItems": 100,
																					"description": "The conditions in this group. A group with no conditions matches nothing, so send at least one."
																				}
																			},
																			"additionalProperties": false,
																			"required": ["operator", "filters"]
																		}
																	]
																},
																"maxItems": 100,
																"description": "Nested filters; each may be a combinator (and/or) or property filter."
															}
														},
														"required": ["operator"],
														"description": "Meeting note filter reference.\n\nTitle keyword searching uses a filter on property \"title\" (for example, string_contains).\nReturns up to 50 rows of matching meeting notes.\n\nFilterable properties:\n- \"title\" (text) — meeting title\n- \"attendees\" (person) — meeting attendees\n- \"created_time\" (date) — when the meeting note was created\n- \"created_by\" (person) — who created the meeting note\n- \"last_edited_time\" (date) — when the meeting note was last edited\n- \"last_edited_by\" (person) — who last edited the meeting note\n\nCombinator filters use \"filters\" (not \"operands\"):\n{\n  \"operator\": \"and\" | \"or\",\n  \"filters\": [ ... ]\n}\n\nDate filtering (recommended default: date_is_within):\n- Prefer \"date_is_within\" for relative windows like \"past N days/weeks/months\".\n- Relative (common): { type: \"relative\", value: \"the_past_week\" | \"the_past_month\" | \"this_week\" }\n- Relative (custom): { type: \"relative\", value: \"custom\", direction: \"past\" | \"future\", unit: \"day\" | \"week\" | \"month\" | \"year\", count: <number> }\n- Exact range: { type: \"exact\", value: { type: \"daterange\", start_date: \"YYYY-MM-DD\", end_date: \"YYYY-MM-DD\" } }\n- Single-date operators (\"date_is\", \"date_is_before\", \"date_is_after\", \"date_is_on_or_before\", \"date_is_on_or_after\"):\n  - Exact: { type: \"exact\", value: { type: \"date\", start_date: \"YYYY-MM-DD\" } }\n  - Relative shortcuts: today | tomorrow | yesterday | one_week_ago | one_week_from_now | one_month_ago | one_month_from_now\n\nTitle keyword filtering (OR vs AND):\n- Use OR (\"operator\": \"or\") when unsure or for broad discovery.\n- Use AND (\"operator\": \"and\") when the user is specific and you want to narrow results.\n- Break multi-word phrases into individual terms and filter on each term separately.\n\nExamples:\n- Past week: <example>{\"operator\":\"and\",\"filters\":[{\"property\":\"created_time\",\"filter\":{\"operator\":\"date_is_within\",\"value\":{\"type\":\"relative\",\"value\":\"the_past_week\"}}}]}</example>\n- Past 3 days: <example>{\"operator\":\"and\",\"filters\":[{\"property\":\"created_time\",\"filter\":{\"operator\":\"date_is_within\",\"value\":{\"type\":\"relative\",\"value\":\"custom\",\"direction\":\"past\",\"unit\":\"day\",\"count\":3}}}]}</example>\n- Exact date range: <example>{\"operator\":\"and\",\"filters\":[{\"property\":\"created_time\",\"filter\":{\"operator\":\"date_is_within\",\"value\":{\"type\":\"exact\",\"value\":{\"type\":\"daterange\",\"start_date\":\"2025-01-01\",\"end_date\":\"2025-12-31\"}}}}]}</example>\n- Created after a date: <example>{\"operator\":\"and\",\"filters\":[{\"property\":\"created_time\",\"filter\":{\"operator\":\"date_is_after\",\"value\":{\"type\":\"exact\",\"value\":{\"type\":\"date\",\"start_date\":\"2025-06-01\"}}}}]}</example>\n- Specific attendee: <example>{\"operator\":\"and\",\"filters\":[{\"property\":\"attendees\",\"filter\":{\"operator\":\"person_contains\",\"value\":[{\"type\":\"exact\",\"value\":{\"table\":\"notion_user\",\"id\":\"<user-id>\"}}]}}]}</example>\n- Attendee since a date: <example>{\"operator\":\"and\",\"filters\":[{\"property\":\"created_time\",\"filter\":{\"operator\":\"date_is_on_or_after\",\"value\":{\"type\":\"exact\",\"value\":{\"type\":\"date\",\"start_date\":\"2025-01-01\"}}}},{\"property\":\"attendees\",\"filter\":{\"operator\":\"person_contains\",\"value\":[{\"type\":\"exact\",\"value\":{\"table\":\"notion_user\",\"id\":\"<user-id>\"}}]}}]}</example>\n- Title contains both terms: <example>{\"operator\":\"and\",\"filters\":[{\"property\":\"title\",\"filter\":{\"operator\":\"string_contains\",\"value\":{\"type\":\"exact\",\"value\":\"design\"}}},{\"property\":\"title\",\"filter\":{\"operator\":\"string_contains\",\"value\":{\"type\":\"exact\",\"value\":\"review\"}}}]}</example>\n- Title contains either term: <example>{\"operator\":\"or\",\"filters\":[{\"property\":\"title\",\"filter\":{\"operator\":\"string_contains\",\"value\":{\"type\":\"exact\",\"value\":\"standup\"}}},{\"property\":\"title\",\"filter\":{\"operator\":\"string_contains\",\"value\":{\"type\":\"exact\",\"value\":\"sync\"}}}]}</example>"
													}
												},
												"description": "The parameters for the query_meeting_notes tool. Query the current user's meeting notes data source.\n\nUse search first to resolve people IDs for attendee filters. By default, results already include meetings where the current user is an attendee or creator; do not add a current-user filter.\n\nTreat words such as summaries, notes, todos, action items, and deliverables as requested meeting output, not title terms. Example: \"What are my meeting todos?\" needs no title filter for \"todos\". Add a title filter only when the user clearly names a meeting, such as \"standup\", \"sprint planning\", or \"1:1 with Alice\". Generic date phrases like \"recent meetings\", \"latest meetings\", \"meetings this week\", or \"yesterday's meetings\" should be interpreted as date range filters — never as title filters. Unless the user asks about a meeting whose title contains another person's name, treat that person as an attendee or creator. Use their name as a title fallback only after attendee filtering returns no results.\n\nTitle keyword matching is case-insensitive; capitalization does not matter. Matching is lexical, so simplify a filter to one term when it returns no results. The filter parameter contains the complete property, date, Boolean-combination, and example reference.\n\nIf availability is not already known for this connection, call get_tool_access with {} before using this tool. Reuse the returned access map across tools; check the status and restricted_parameters."
											}
										},
										"required": ["type", "query_meeting_notes"],
										"title": "Query Meeting Notes"
									},
									{
										"type": "object",
										"properties": {
											"type": {
												"type": "string",
												"const": "list_agents",
												"description": "The name of the tool to run."
											},
											"list_agents": {
												"type": "object",
												"properties": {
													"query": {
														"type": "string",
														"minLength": 1,
														"maxLength": 100,
														"description": "Optional search query to filter agents by name or description (case-insensitive)."
													},
													"start_cursor": {
														"type": "string",
														"minLength": 1,
														"description": "Cursor for pagination. Use the next_cursor value from the previous response to get the next page."
													},
													"page_size": {
														"type": "integer",
														"minimum": 1,
														"maximum": 100,
														"description": "Number of agents to return per page (default: 50, max: 100)."
													}
												},
												"description": "The parameters for the list_agents tool. Retrieves a list of all custom agents (workflows) that the authenticated user has access to in the current workspace.\nThis tool provides visibility into available agents including their names, IDs, descriptions, and system instructions.\n\nThe optional query filters agents by case-insensitive substring match on their name and description. Results are\npaginated: when has_more is true, pass the response's next_cursor back as start_cursor to fetch the next page.\n\nThe returned data includes:\n- Agent ID\n- Agent name\n- Agent description\n- Agent system instructions\n\n<examples>\n1. List all available agents: {}\n\n2. Filter agents by name or description: {\"query\": \"customer support\"}\n\n3. Get next page of results: {\"start_cursor\": \"...\"}\n\n4. Set custom page size: {\"page_size\": 20}\n</examples>\n\nIf availability is not already known for this connection, call get_tool_access with {} before using this tool. Reuse the returned access map across tools; check the status and restricted_parameters."
											}
										},
										"required": ["type", "list_agents"],
										"title": "List Agents"
									},
									{
										"type": "object",
										"properties": {
											"type": {
												"type": "string",
												"const": "list_private_pages",
												"description": "The name of the tool to run."
											},
											"list_private_pages": {
												"type": "object",
												"properties": {
													"limit": {
														"type": "number",
														"description": "Maximum results to return (1-200)."
													},
													"cursor": {
														"type": "string",
														"description": "Opaque pagination cursor from the previous response."
													}
												},
												"additionalProperties": false,
												"description": "The parameters for the list_private_pages tool. List the current user's top-level pages and databases in their Private sidebar section. Use this to browse private workspace structure. For content searches, including keywords and titles, use ai_search when get_tool_access reports it is available; otherwise use search. Follow cursor pagination when the complete list is needed."
											}
										},
										"required": ["type", "list_private_pages"],
										"title": "List Private Pages"
									},
									{
										"type": "object",
										"properties": {
											"type": {
												"type": "string",
												"const": "list_shared_pages",
												"description": "The name of the tool to run."
											},
											"list_shared_pages": {
												"type": "object",
												"properties": {
													"limit": {
														"type": "number",
														"description": "Maximum results to return (1-200)."
													},
													"cursor": {
														"type": "string",
														"description": "Opaque pagination cursor from the previous response."
													}
												},
												"additionalProperties": false,
												"description": "The parameters for the list_shared_pages tool. List pages and databases in the current user's Shared sidebar section. Use this to browse content shared directly with the user. For content searches, including keywords and titles, use ai_search when get_tool_access reports it is available; otherwise use search. Follow cursor pagination when the complete list is needed."
											}
										},
										"required": ["type", "list_shared_pages"],
										"title": "List Shared Pages"
									},
									{
										"type": "object",
										"properties": {
											"type": {
												"type": "string",
												"const": "list_favorite_pages",
												"description": "The name of the tool to run."
											},
											"list_favorite_pages": {
												"type": "object",
												"properties": {
													"limit": {
														"type": "number",
														"description": "Maximum results to return (1-200)."
													},
													"cursor": {
														"type": "string",
														"description": "Opaque pagination cursor from the previous response."
													}
												},
												"additionalProperties": false,
												"description": "The parameters for the list_favorite_pages tool. List the current user's favorite pages and databases in sidebar order. Use this when the user refers to a favorite or pinned workspace item. Follow cursor pagination when the complete list is needed."
											}
										},
										"required": ["type", "list_favorite_pages"],
										"title": "List Favorite Pages"
									},
									{
										"type": "object",
										"properties": {
											"type": {
												"type": "string",
												"const": "list_recent_pages",
												"description": "The name of the tool to run."
											},
											"list_recent_pages": {
												"type": "object",
												"properties": {
													"limit": {
														"type": "number",
														"description": "Maximum results to return (1-200)."
													},
													"cursor": {
														"type": "string",
														"description": "Opaque pagination cursor from the previous response."
													}
												},
												"additionalProperties": false,
												"description": "The parameters for the list_recent_pages tool. List pages and databases the current user recently viewed, ranked by recency and visit frequency. Use this to recover likely navigation context when the user refers to something they were recently working on. This reflects views, not edits; to find pages the user edited, use search with filters.edited_by_user_ids: [\"me\"] and sort: \"last_edited\". Follow cursor pagination when the complete list is needed."
											}
										},
										"required": ["type", "list_recent_pages"],
										"title": "List Recent Pages"
									},
									{
										"type": "object",
										"properties": {
											"type": {
												"type": "string",
												"const": "search_agents",
												"description": "The name of the tool to run."
											},
											"search_agents": {
												"type": "object",
												"properties": {
													"scope": {
														"type": "string",
														"enum": ["favorites", "workspace"],
														"description": "Which agents to list: \"favorites\" for the current user's favorite agents, or \"workspace\" for agents shared with the workspace."
													},
													"query": {
														"type": "string",
														"description": "Search text matched against agent names and descriptions. Queries return one page and cannot use a cursor. When omitted, favorites are returned in sidebar order and workspace agents are returned newest first."
													},
													"limit": {
														"type": "number",
														"description": "Maximum results to return (1-200)."
													},
													"cursor": {
														"type": "string",
														"description": "Opaque pagination cursor from the previous response."
													}
												},
												"additionalProperties": false,
												"required": ["scope"],
												"description": "The parameters for the search_agents tool. Search agents by name or description, or browse the current user's favorite agents and the workspace's newest agents. Queries return one page. Without a query, follow nextCursor until it is omitted, even when a bounded workspace page is empty. Use this instead of list_agents when personal favorites or relevance-ranked search are needed.\n\nIf availability is not already known for this connection, call get_tool_access with {} before using this tool. Reuse the returned access map across tools; check the status and restricted_parameters."
											}
										},
										"required": ["type", "search_agents"],
										"title": "Search Agents"
									},
									{
										"type": "object",
										"properties": {
											"type": {
												"type": "string",
												"const": "search_sessions",
												"description": "The name of the tool to run."
											},
											"search_sessions": {
												"type": "object",
												"properties": {
													"question": {
														"type": "string",
														"description": "What you want to find in past sessions."
													},
													"lookback": {
														"type": "string",
														"description": "How far back to search, such as \"30d\" or \"1y\". Leave it out to search the past year."
													}
												},
												"required": ["question"],
												"description": "The parameters for the search_sessions tool. Search past agent sessions by topic in a periodically refreshed index and return matching session URLs and excerpts. Recently created or updated sessions may not appear; use query_sessions for recent sessions.\n\nIf availability is not already known for this connection, call get_tool_access with {} before using this tool. Reuse the returned access map across tools; check the status and restricted_parameters."
											}
										},
										"required": ["type", "search_sessions"],
										"title": "Search Sessions"
									},
									{
										"type": "object",
										"properties": {
											"type": {
												"type": "string",
												"const": "query_sessions",
												"description": "The name of the tool to run."
											},
											"query_sessions": {
												"type": "object",
												"properties": {
													"query": {
														"type": "string",
														"maxLength": 2000,
														"description": "A case-insensitive substring search over session titles."
													},
													"filter": {
														"oneOf": [
															{
																"$ref": "#/components/schemas/sessionIdFilter"
															},
															{
																"$ref": "#/components/schemas/sessionAgentIdFilter"
															},
															{
																"$ref": "#/components/schemas/sessionStatusFilter"
															},
															{
																"$ref": "#/components/schemas/sessionTimestampFilter"
															},
															{
																"type": "object",
																"required": ["and"],
																"additionalProperties": false,
																"properties": {
																	"and": {
																		"type": "array",
																		"maxItems": 100,
																		"description": "Return sessions that match every child filter.",
																		"items": {
																			"$ref": "#/components/schemas/sessionNestedFilter"
																		}
																	}
																}
															},
															{
																"type": "object",
																"required": ["or"],
																"additionalProperties": false,
																"properties": {
																	"or": {
																		"type": "array",
																		"maxItems": 100,
																		"description": "Return sessions that match any child filter.",
																		"items": {
																			"$ref": "#/components/schemas/sessionNestedFilter"
																		}
																	}
																}
															}
														],
														"description": "A session property filter, or an and/or compound filter nested up to two levels deep."
													},
													"sorts": {
														"type": "array",
														"items": {
															"type": "object",
															"properties": {
																"property": {
																	"type": "string",
																	"enum": ["created_at", "updated_at"],
																	"description": "One of: `created_at`, `updated_at`"
																},
																"direction": {
																	"type": "string",
																	"enum": ["ascending", "descending"],
																	"description": "One of: `ascending`, `descending`"
																}
															},
															"additionalProperties": false,
															"required": ["property", "direction"]
														},
														"maxItems": 2,
														"minItems": 1,
														"description": "Ordered sort precedence. Defaults to updated_at descending."
													},
													"start_cursor": {
														"type": "string",
														"description": "The continuation cursor returned by the previous page."
													},
													"page_size": {
														"type": "integer",
														"minimum": 1,
														"maximum": 100,
														"description": "The number of sessions to return. Maximum: 100."
													}
												},
												"additionalProperties": false,
												"description": "The parameters for the query_sessions tool. List agent sessions available to the integration. Filter, sort, or search by title. A bounded page can be empty while has_more is true; follow next_cursor until has_more is false.\n\nIf availability is not already known for this connection, call get_tool_access with {} before using this tool. Reuse the returned access map across tools; check the status and restricted_parameters."
											}
										},
										"required": ["type", "query_sessions"],
										"title": "Query Sessions"
									},
									{
										"type": "object",
										"properties": {
											"type": {
												"type": "string",
												"const": "spawn_session",
												"description": "The name of the tool to run."
											},
											"spawn_session": {
												"type": "object",
												"properties": {
													"agent_url": {
														"type": "string",
														"minLength": 1,
														"description": "Published Custom Agent URL in agent://<spaceId>/<agentId> format, as returned by search_agents."
													},
													"initial_message": {
														"type": "string",
														"minLength": 1,
														"description": "Initial message for the new session."
													}
												},
												"required": ["agent_url", "initial_message"],
												"description": "The parameters for the spawn_session tool. Start a session with a published Custom Agent. Use get_session_status or wait_session to check its progress.\n\nIf availability is not already known for this connection, call get_tool_access with {} before using this tool. Reuse the returned access map across tools; check the status and restricted_parameters."
											}
										},
										"required": ["type", "spawn_session"],
										"title": "Spawn Session"
									},
									{
										"type": "object",
										"properties": {
											"type": {
												"type": "string",
												"const": "get_session_status",
												"description": "The name of the tool to run."
											},
											"get_session_status": {
												"type": "object",
												"properties": {
													"session_url": {
														"type": "string",
														"minLength": 1,
														"description": "Use the complete session_url returned by session tools, unchanged. Format: session://<spaceId>/<sessionId>. Shorthand session://<sessionId> and thread://<sessionId> use the connected workspace. Fully qualified URLs must refer to that workspace."
													}
												},
												"required": ["session_url"],
												"description": "The parameters for the get_session_status tool. Get the latest turn's status for a Custom Agent session without waiting.\n\nIf availability is not already known for this connection, call get_tool_access with {} before using this tool. Reuse the returned access map across tools; check the status and restricted_parameters."
											}
										},
										"required": ["type", "get_session_status"],
										"title": "Get Session Status"
									},
									{
										"type": "object",
										"properties": {
											"type": {
												"type": "string",
												"const": "wait_session",
												"description": "The name of the tool to run."
											},
											"wait_session": {
												"type": "object",
												"properties": {
													"session_url": {
														"type": "string",
														"minLength": 1,
														"description": "Use the complete session_url returned by session tools, unchanged. Format: session://<spaceId>/<sessionId>. Shorthand session://<sessionId> and thread://<sessionId> use the connected workspace. Fully qualified URLs must refer to that workspace."
													},
													"seconds": {
														"type": "integer",
														"minimum": 1,
														"maximum": 60,
														"description": "Maximum number of seconds to wait."
													}
												},
												"required": ["session_url", "seconds"],
												"description": "The parameters for the wait_session tool. Wait for the latest turn in a Custom Agent session to stop running.\n\nIf availability is not already known for this connection, call get_tool_access with {} before using this tool. Reuse the returned access map across tools; check the status and restricted_parameters."
											}
										},
										"required": ["type", "wait_session"],
										"title": "Wait Session"
									},
									{
										"type": "object",
										"properties": {
											"type": {
												"type": "string",
												"const": "stop_session",
												"description": "The name of the tool to run."
											},
											"stop_session": {
												"type": "object",
												"properties": {
													"session_url": {
														"type": "string",
														"minLength": 1,
														"description": "Use the complete session_url returned by session tools, unchanged. Format: session://<spaceId>/<sessionId>. Shorthand session://<sessionId> and thread://<sessionId> use the connected workspace. Fully qualified URLs must refer to that workspace."
													}
												},
												"required": ["session_url"],
												"description": "The parameters for the stop_session tool. Stop a running Custom Agent session you can access.\n\nIf availability is not already known for this connection, call get_tool_access with {} before using this tool. Reuse the returned access map across tools; check the status and restricted_parameters."
											}
										},
										"required": ["type", "stop_session"],
										"title": "Stop Session"
									},
									{
										"type": "object",
										"properties": {
											"type": {
												"type": "string",
												"const": "send_message_to_session",
												"description": "The name of the tool to run."
											},
											"send_message_to_session": {
												"type": "object",
												"properties": {
													"session_url": {
														"type": "string",
														"minLength": 1,
														"description": "Use the complete session_url returned by session tools, unchanged. Format: session://<spaceId>/<sessionId>. Shorthand session://<sessionId> and thread://<sessionId> use the connected workspace. Fully qualified URLs must refer to that workspace."
													},
													"message": {
														"type": "string",
														"minLength": 1,
														"description": "Follow-up message to send."
													}
												},
												"required": ["session_url", "message"],
												"description": "The parameters for the send_message_to_session tool. Send a follow-up message to a Custom Agent session you can access.\n\nIf availability is not already known for this connection, call get_tool_access with {} before using this tool. Reuse the returned access map across tools; check the status and restricted_parameters."
											}
										},
										"required": ["type", "send_message_to_session"],
										"title": "Send Message To Session"
									},
									{
										"type": "object",
										"properties": {
											"type": {
												"type": "string",
												"const": "list_session_events",
												"description": "The name of the tool to run."
											},
											"list_session_events": {
												"type": "object",
												"properties": {
													"session_url": {
														"type": "string",
														"minLength": 1,
														"description": "Use the complete session_url returned by session tools, unchanged. Format: session://<spaceId>/<sessionId>. Shorthand session://<sessionId> and thread://<sessionId> use the connected workspace. Fully qualified URLs must refer to that workspace."
													},
													"count": {
														"type": "integer",
														"minimum": 1,
														"maximum": 100,
														"description": "Maximum number of committed events to return."
													},
													"before_sequence": {
														"type": "integer",
														"minimum": 1,
														"description": "Load the previous page of events ending before this sequence number."
													},
													"after_sequence": {
														"type": "integer",
														"minimum": 1,
														"description": "Load the next page of events starting after this sequence number."
													}
												},
												"required": ["session_url", "count"],
												"description": "The parameters for the list_session_events tool. List short summaries of saved events in a Custom Agent session.\n\nIf availability is not already known for this connection, call get_tool_access with {} before using this tool. Reuse the returned access map across tools; check the status and restricted_parameters."
											}
										},
										"required": ["type", "list_session_events"],
										"title": "List Session Events"
									},
									{
										"type": "object",
										"properties": {
											"type": {
												"type": "string",
												"const": "read_session_event",
												"description": "The name of the tool to run."
											},
											"read_session_event": {
												"type": "object",
												"properties": {
													"session_url": {
														"type": "string",
														"minLength": 1,
														"description": "Use the complete session_url returned by session tools, unchanged. Format: session://<spaceId>/<sessionId>. Shorthand session://<sessionId> and thread://<sessionId> use the connected workspace. Fully qualified URLs must refer to that workspace."
													},
													"sequence": {
														"type": "integer",
														"minimum": 1,
														"description": "Committed event sequence number to read."
													}
												},
												"required": ["session_url", "sequence"],
												"description": "The parameters for the read_session_event tool. Read the full visible content of one saved Custom Agent session event.\n\nIf availability is not already known for this connection, call get_tool_access with {} before using this tool. Reuse the returned access map across tools; check the status and restricted_parameters."
											}
										},
										"required": ["type", "read_session_event"],
										"title": "Read Session Event"
									},
									{
										"type": "object",
										"properties": {
											"type": {
												"type": "string",
												"const": "create_view",
												"description": "The name of the tool to run."
											},
											"create_view": {
												"type": "object",
												"properties": {
													"data_source_id": {
														"type": "string",
														"description": "The data source (collection) ID. Accepts a collection:// URI from <data-source> tags or a bare UUID."
													},
													"name": {
														"type": "string",
														"description": "The name of the view."
													},
													"type": {
														"type": "string",
														"enum": [
															"table",
															"board",
															"list",
															"calendar",
															"timeline",
															"gallery",
															"form",
															"chart",
															"map",
															"dashboard"
														],
														"description": "The type of view to create."
													},
													"database_id": {
														"type": "string",
														"description": "The database to add a view tab to. Accepts a Notion URL or a bare UUID. Mutually exclusive with `parent_page_id`; exactly one must be provided."
													},
													"parent_page_id": {
														"type": "string",
														"description": "A page to create an inline linked database view on, like the UI /linked command. Accepts a Notion URL or a bare UUID. The new linked view block is appended at the end of the page and references `data_source_id`. Mutually exclusive with `database_id`; exactly one must be provided."
													},
													"show_data_source_title": {
														"type": "boolean",
														"description": "Whether the new linked view block shows its data source title above the view, like the Show data source title toggle in the Notion app. Defaults to true. Only valid with `parent_page_id`."
													},
													"configure": {
														"type": "string",
														"description": "View configuration DSL directives and examples:\n- FILTER \"Property\" = \"value\" — filter rows. Relation values must be a page\n  URL or UUID; person values must be a user URI (user://<user_id>), user\n  UUID, or \"me\". Names are not supported for either.\n- QUICK FILTER \"Property\" — add a quick filter to the view's filter bar with\n  no criteria; add a condition to preselect one (QUICK FILTER \"Status\" = \"Done\")\n- SORT BY \"Property\" ASC — sort rows\n- GROUP BY \"Property\" [BY OPTION | BY GROUP] [SHOW EMPTY | HIDE EMPTY] — group by property (required for board views)\n- SUB GROUP BY \"Property\" [BY OPTION | BY GROUP] [SHOW EMPTY | HIDE EMPTY] — add board sub-grouping\nBY OPTION and BY GROUP apply only to status properties and rollups that return status values (Show original or Show unique). For select and multi_select properties, omit both modifiers, even if the property is named \"Status\" (for example, GROUP BY \"Status\").\n- CARD LAYOUT default | compact — set board or gallery card layout\n- CARD SIZE small|medium|large — set gallery card size independently of its cover\n- CALENDAR BY \"Property\" — date property (required for calendar views)\n- TIMELINE BY \"Start\" TO \"End\" — date range (required for timeline views)\n- MAP BY \"Property\" — location property (required for map views)\n- CHART column|bar|line|donut|number — chart type with optional AGGREGATE, COLOR, HEIGHT, SORT, STACK BY, CAPTION\n- FORM CLOSE|OPEN — close/open form submissions\n- FORM ANONYMOUS true|false — toggle anonymous submissions\n- FORM PERMISSIONS none|reader|editor — set submission permissions\n- SHOW \"Prop1\", \"Prop2\" — set visible properties\n- WIDTH \"Prop1\" 320, \"Prop2\" 120 — set table column widths in pixels\n- COVER \"Property\" — cover image property\n- WRAP PROPERTIES true|false — wrap configured gallery property values\n- ICON \"🚀\" — view tab icon: an emoji, a Notion icon such as \"icons/rocket_blue\", or an image URL\n\n<example>SHOW \"Name\", \"Status\", \"Due Date\"</example>\n<example>GROUP BY \"Status\" BY GROUP SHOW EMPTY; SUB GROUP BY \"Priority\"; CARD LAYOUT compact</example>\n<example>SHOW \"Name\", \"Status\"; CARD SIZE small; WRAP PROPERTIES true</example>\n<example>FILTER \"Status\" = \"In Progress\"; SORT BY \"Due Date\" ASC</example>\n<example>CALENDAR BY \"Due Date\"</example>\n<example>TIMELINE BY \"Start\" TO \"End\"</example>\n<example>FILTER \"Company\" = \"Acme\"</example>"
													}
												},
												"required": ["data_source_id", "name", "type"],
												"description": "The parameters for the create_view tool. Create a new view on a Notion database.\n\nUse fetch first to get database_id, parent_page_id, and the collection:// data_source_id. The caller needs edit access to the database or parent page and access to the data source.\n\nProvide exactly one placement: database_id adds a view tab to that database; parent_page_id appends an inline linked database view to that page. Always provide data_source_id.\n\nSupported types: table, board, list, calendar, timeline, gallery, form, chart, map, and dashboard.\n\nThe optional configure field uses the view DSL for filters, sorts, grouping, and display. Read notion://docs/view-dsl-spec through the MCP resource interface, or pass that URI to the Notion fetch tool. Do not guess the syntax."
											}
										},
										"required": ["type", "create_view"],
										"title": "Create View"
									},
									{
										"type": "object",
										"properties": {
											"type": {
												"type": "string",
												"const": "update_view",
												"description": "The name of the tool to run."
											},
											"update_view": {
												"type": "object",
												"properties": {
													"view_id": {
														"type": "string",
														"description": "The view to update. Accepts a view:// URI, a Notion URL with ?v= parameter, or a bare UUID."
													},
													"name": {
														"type": "string",
														"description": "New name for the view."
													},
													"configure": {
														"type": "string",
														"description": "View configuration DSL string. Supports FILTER, QUICK FILTER, SORT BY, GROUP BY, SUB GROUP BY, CARD LAYOUT, CARD SIZE, CALENDAR BY, TIMELINE BY, MAP BY, CHART, FORM, SHOW, HIDE, COVER, WRAP CELLS, WRAP PROPERTIES, FREEZE COLUMNS, ICON, WIDTH, and CLEAR directives. BY OPTION and BY GROUP apply only to status properties and rollups that return status values (Show original or Show unique). For select and multi_select properties, omit both modifiers, even if the property is named \"Status\" (for example, GROUP BY \"Status\")."
													}
												},
												"required": ["view_id"],
												"description": "The parameters for the update_view tool. Update a view's name, filters, sorts, or display configuration.\n\nUse \"fetch\" to get view IDs from database responses. Only include fields\nyou want to change. The \"configure\" param uses the same DSL as create_view.\nUse CLEAR to remove settings:\n- CLEAR FILTER — remove all filters\n- CLEAR QUICK FILTER — remove all quick filters, or name properties to remove\n  only theirs (CLEAR QUICK FILTER \"Status\")\n- CLEAR SORT — remove all sorts\n- CLEAR GROUP BY — remove grouping. Boards reject it; use GROUP BY with\n  another property instead (CLEAR SUB GROUP BY still works).\n- CLEAR SUB GROUP BY — remove board sub-grouping\n- CLEAR ICON — remove the view's tab icon\n\nSet board or gallery card layout with CARD LAYOUT default or CARD LAYOUT compact.\nSet gallery card size without a cover property with CARD SIZE small, medium, or large.\nBY OPTION and BY GROUP apply only to status properties and rollups that return status values (Show original or Show unique). For select and multi_select properties, omit both modifiers, even if the property is named \"Status\" (for example, GROUP BY \"Status\").\n\nSee notion://docs/view-dsl-spec resource for full syntax (readable via your\nMCP client's resource-reading interface, or by passing the URI to the Notion\n\"fetch\" tool).\n\n<example description=\"Rename\">{\"view_id\": \"abc123\", \"name\": \"Sprint Board\"}</example>\n<example description=\"Update filter\">{\"view_id\": \"abc123\", \"configure\": \"FILTER \\\"Status\\\" = \\\"Done\\\"\"}</example>\n<example description=\"Add quick filters without criteria\">{\"view_id\": \"abc123\", \"configure\": \"QUICK FILTER \\\"Status\\\", \\\"Assignee\\\"\"}</example>\n<example description=\"Clear filter, add sort\">{\"view_id\": \"abc123\", \"configure\": \"CLEAR FILTER; SORT BY \\\"Created\\\" DESC\"}</example>\n<example description=\"Update grouping\">{\"view_id\": \"abc123\", \"configure\": \"GROUP BY \\\"Status\\\" BY GROUP SHOW EMPTY; SUB GROUP BY \\\"Priority\\\"; CARD LAYOUT compact\"}</example>"
											}
										},
										"required": ["type", "update_view"],
										"title": "Update View"
									},
									{
										"type": "object",
										"properties": {
											"type": {
												"type": "string",
												"const": "search_emails",
												"description": "The name of the tool to run."
											},
											"search_emails": {
												"type": "object",
												"properties": {
													"query": {
														"type": "string",
														"minLength": 1,
														"maxLength": 1000,
														"description": "Search query string using Gmail-style search operators (e.g. from:, is:unread, newer_than:1d, after:/before:, subject:)."
													},
													"user_email_address": {
														"type": "string",
														"minLength": 3,
														"maxLength": 320,
														"description": "The email address of the mailbox to search. Omit to use the user's default connected account."
													},
													"count": {
														"type": "integer",
														"minimum": 1,
														"maximum": 500,
														"description": "Number of results to return (default: 20, max: 500)."
													},
													"page_token": {
														"type": "string",
														"minLength": 1,
														"description": "Pagination token from previous search results."
													},
													"include_spam_trash": {
														"type": "boolean",
														"description": "Whether to include spam and trash in results. Defaults to false."
													}
												},
												"required": ["query"],
												"description": "The parameters for the search_emails tool. Search the user's email inbox (their Notion Mail connected account) using\nGmail query syntax, and return matching threads with ids, participants,\ndates, and snippets.\n\nThis searches the user's personal mailbox, not Notion workspace content —\nuse the regular \"search\" tool for pages and databases. Only Gmail-backed\naccounts are supported by this tool.\n\nQuery guidance: use Gmail-style operators (from:, to:, subject:, is:unread,\nhas:attachment, newer_than:1d, after:/before:). For topic or digest requests,\nprefer recency (newer_than:1d) and/or sender (from:) filters over subject:\nkeyword filtering: subjects don't reliably contain the topic word, and when\nfiltering by subject/body cover synonyms rather than over-filtering one term.\nDate bounds after:/before: take a plain date with no time component\n(before:2026/05/08 or before:2026-05-08); a time component is not valid Gmail\nsyntax and silently returns nothing.\n\nEach result includes a threadId: a single opaque string, possibly with a\nverification stamp appended after a \".\" (e.g. 1894c2bd0f58f2b7.a83f92c1).\nPass the whole value unchanged to view-thread-content.\n\nResults may include url: a direct provider URL for opening the thread. Use it\ndirectly; never construct a provider URL from threadId or message IDs.\n\t\n\nIf availability is not already known for this connection, call get_tool_access with {} before using this tool. Reuse the returned access map across tools; check the status and restricted_parameters."
											}
										},
										"required": ["type", "search_emails"],
										"title": "Search Emails"
									},
									{
										"type": "object",
										"properties": {
											"type": {
												"type": "string",
												"const": "view_thread_content",
												"description": "The name of the tool to run."
											},
											"view_thread_content": {
												"type": "object",
												"properties": {
													"thread_id": {
														"type": "string",
														"minLength": 1,
														"maxLength": 256,
														"description": "The thread ID to view (from search-emails). A stamped ref is accepted as-is."
													},
													"user_email_address": {
														"type": "string",
														"minLength": 3,
														"maxLength": 320,
														"description": "The email address of the mailbox containing the thread. Omit to use the user's default connected account."
													},
													"most_recent_message_only": {
														"type": "boolean",
														"description": "If true (the default), returns only the most recent message. Set false to return all messages in the thread."
													}
												},
												"required": ["thread_id"],
												"description": "The parameters for the view_thread_content tool. View the content of an email thread from the user's email inbox (their Notion\nMail connected account), including message bodies and attachment metadata.\n\nUse a threadId returned by search-emails. The id is a single opaque string; a\nverification stamp may be appended after a \".\" (e.g. 1894c2bd0f58f2b7.a83f92c1)\nand that stamp is part of the value, not a separate field — pass the whole\nvalue exactly as received.\n\nThread ids are scoped to the mailbox they were found in: if the search ran\nagainst a non-default mailbox (see searched_email_address in the search\nresult), pass that same address as user_email_address here.\n\nThe response may include url: a direct provider URL for opening the thread. Use\nit directly; never construct a provider URL from threadId or message IDs.\n\t\n\nIf availability is not already known for this connection, call get_tool_access with {} before using this tool. Reuse the returned access map across tools; check the status and restricted_parameters."
											}
										},
										"required": ["type", "view_thread_content"],
										"title": "View Thread Content"
									},
									{
										"type": "object",
										"properties": {
											"type": {
												"type": "string",
												"const": "xldb_update_column_title",
												"description": "The name of the tool to run."
											},
											"xldb_update_column_title": {
												"type": "object",
												"properties": {
													"title": {
														"type": "string",
														"description": "New display title for the column."
													},
													"tableId": {
														"type": "string",
														"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$",
														"description": "ID of the XL database table."
													},
													"columnId": {
														"type": "string",
														"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$",
														"description": "ID of the column to rename."
													}
												},
												"additionalProperties": false,
												"required": ["title", "tableId", "columnId"],
												"description": "The parameters for the xldb_update_column_title tool. Change the display title of an XL database column without changing its stable name or ID."
											}
										},
										"required": ["type", "xldb_update_column_title"],
										"title": "Xldb Update Column Title"
									},
									{
										"type": "object",
										"properties": {
											"type": {
												"type": "string",
												"const": "xldb_remove_column",
												"description": "The name of the tool to run."
											},
											"xldb_remove_column": {
												"type": "object",
												"properties": {
													"tableId": {
														"type": "string",
														"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$",
														"description": "ID of the XL database table."
													},
													"columnId": {
														"type": "string",
														"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$",
														"description": "ID of the column to delete."
													}
												},
												"additionalProperties": false,
												"required": ["tableId", "columnId"],
												"description": "The parameters for the xldb_remove_column tool. Delete a column from an XL database table."
											}
										},
										"required": ["type", "xldb_remove_column"],
										"title": "Xldb Remove Column"
									},
									{
										"type": "object",
										"properties": {
											"type": {
												"type": "string",
												"const": "xldb_remove_view_column",
												"description": "The name of the tool to run."
											},
											"xldb_remove_view_column": {
												"type": "object",
												"properties": {
													"viewId": {
														"type": "string",
														"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$",
														"description": "ID of the XLDB view whose column will be removed."
													},
													"columnId": {
														"type": "string",
														"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$",
														"description": "ID of the view column to remove."
													},
													"expectedViewGeneration": {
														"type": "integer",
														"minimum": 1,
														"maximum": 9007199254740991,
														"description": "Generation of the view read before this edit."
													}
												},
												"additionalProperties": false,
												"required": [
													"viewId",
													"columnId",
													"expectedViewGeneration"
												],
												"description": "The parameters for the xldb_remove_view_column tool. Delete a property from an XL database view."
											}
										},
										"required": ["type", "xldb_remove_view_column"],
										"title": "Xldb Remove View Column"
									},
									{
										"type": "object",
										"properties": {
											"type": {
												"type": "string",
												"const": "xldb_remove_view_join",
												"description": "The name of the tool to run."
											},
											"xldb_remove_view_join": {
												"type": "object",
												"properties": {
													"viewId": {
														"type": "string",
														"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$",
														"description": "ID of the XLDB view whose join will be removed."
													},
													"joinId": {
														"type": "string",
														"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$",
														"description": "ID of the join to remove."
													},
													"expectedViewGeneration": {
														"type": "integer",
														"minimum": 1,
														"maximum": 9007199254740991,
														"description": "Generation of the view read before this edit."
													}
												},
												"additionalProperties": false,
												"required": [
													"viewId",
													"joinId",
													"expectedViewGeneration"
												],
												"description": "The parameters for the xldb_remove_view_join tool. Delete a join from an XL database view."
											}
										},
										"required": ["type", "xldb_remove_view_join"],
										"title": "Xldb Remove View Join"
									},
									{
										"type": "object",
										"properties": {
											"type": {
												"type": "string",
												"const": "xldb_add_view_join",
												"description": "The name of the tool to run."
											},
											"xldb_add_view_join": {
												"type": "object",
												"properties": {
													"viewId": {
														"type": "string",
														"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$",
														"description": "ID of the XLDB view whose joins will change."
													},
													"leftColumnId": {
														"type": "string",
														"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$",
														"description": "ID of the base table column to match against the joined database."
													},
													"expectedViewGeneration": {
														"type": "integer",
														"minimum": 1,
														"maximum": 9007199254740991,
														"description": "Current view generation from get view. Rejects changes made against an older view definition."
													},
													"source": {
														"oneOf": [
															{
																"type": "object",
																"properties": {
																	"type": {
																		"type": "string",
																		"const": "xldb",
																		"description": "Always `xldb`"
																	},
																	"tableId": {
																		"type": "string",
																		"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$",
																		"description": "ID of the XLDB table to join."
																	},
																	"rightColumnId": {
																		"type": "string",
																		"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$",
																		"description": "ID of the joined table column to match against leftColumnId."
																	},
																	"selectedColumnIds": {
																		"type": "array",
																		"items": {
																			"type": "string",
																			"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"
																		},
																		"maxItems": 30,
																		"minItems": 1,
																		"uniqueItems": true,
																		"description": "IDs of columns from the joined table to include in the view."
																	}
																},
																"additionalProperties": false,
																"required": [
																	"type",
																	"tableId",
																	"rightColumnId",
																	"selectedColumnIds"
																]
															},
															{
																"type": "object",
																"properties": {
																	"type": {
																		"type": "string",
																		"const": "collection",
																		"description": "Always `collection`"
																	},
																	"collectionId": {
																		"type": "string",
																		"format": "uuid",
																		"description": "ID of the Notion database collection to join."
																	},
																	"rightPropertyId": {
																		"type": "string",
																		"description": "Property ID in the Notion database to match against leftColumnId."
																	},
																	"selectedPropertyIds": {
																		"type": "array",
																		"items": {
																			"type": "string"
																		},
																		"maxItems": 100,
																		"minItems": 1,
																		"uniqueItems": true,
																		"description": "Property IDs from the Notion database to include in the view."
																	}
																},
																"additionalProperties": false,
																"required": [
																	"type",
																	"collectionId",
																	"rightPropertyId",
																	"selectedPropertyIds"
																]
															}
														],
														"description": "Database to join, the matching field, and the fields to include."
													}
												},
												"additionalProperties": false,
												"required": [
													"viewId",
													"leftColumnId",
													"expectedViewGeneration",
													"source"
												],
												"description": "The parameters for the xldb_add_view_join tool. Create a join from an XL database view."
											}
										},
										"required": ["type", "xldb_add_view_join"],
										"title": "Xldb Add View Join"
									},
									{
										"type": "object",
										"properties": {
											"type": {
												"type": "string",
												"const": "xldb_update_view_join",
												"description": "The name of the tool to run."
											},
											"xldb_update_view_join": {
												"type": "object",
												"properties": {
													"viewId": {
														"type": "string",
														"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$",
														"description": "ID of the XLDB view whose joins will change."
													},
													"leftColumnId": {
														"type": "string",
														"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$",
														"description": "ID of the base table column to match against the joined database."
													},
													"expectedViewGeneration": {
														"type": "integer",
														"minimum": 1,
														"maximum": 9007199254740991,
														"description": "Current view generation from get view. Rejects changes made against an older view definition."
													},
													"source": {
														"oneOf": [
															{
																"type": "object",
																"properties": {
																	"type": {
																		"type": "string",
																		"const": "xldb",
																		"description": "Always `xldb`"
																	},
																	"tableId": {
																		"type": "string",
																		"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$",
																		"description": "ID of the XLDB table to join."
																	},
																	"rightColumnId": {
																		"type": "string",
																		"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$",
																		"description": "ID of the joined table column to match against leftColumnId."
																	},
																	"selectedColumnIds": {
																		"type": "array",
																		"items": {
																			"type": "string",
																			"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"
																		},
																		"maxItems": 30,
																		"minItems": 1,
																		"uniqueItems": true,
																		"description": "IDs of columns from the joined table to include in the view."
																	}
																},
																"additionalProperties": false,
																"required": [
																	"type",
																	"tableId",
																	"rightColumnId",
																	"selectedColumnIds"
																]
															},
															{
																"type": "object",
																"properties": {
																	"type": {
																		"type": "string",
																		"const": "collection",
																		"description": "Always `collection`"
																	},
																	"collectionId": {
																		"type": "string",
																		"format": "uuid",
																		"description": "ID of the Notion database collection to join."
																	},
																	"rightPropertyId": {
																		"type": "string",
																		"description": "Property ID in the Notion database to match against leftColumnId."
																	},
																	"selectedPropertyIds": {
																		"type": "array",
																		"items": {
																			"type": "string"
																		},
																		"maxItems": 100,
																		"minItems": 1,
																		"uniqueItems": true,
																		"description": "Property IDs from the Notion database to include in the view."
																	}
																},
																"additionalProperties": false,
																"required": [
																	"type",
																	"collectionId",
																	"rightPropertyId",
																	"selectedPropertyIds"
																]
															}
														],
														"description": "Database to join, the matching field, and the fields to include."
													},
													"joinId": {
														"type": "string",
														"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$",
														"description": "ID of the existing join to update."
													}
												},
												"additionalProperties": false,
												"required": [
													"viewId",
													"leftColumnId",
													"expectedViewGeneration",
													"source",
													"joinId"
												],
												"description": "The parameters for the xldb_update_view_join tool. Update a join from an XL database view."
											}
										},
										"required": ["type", "xldb_update_view_join"],
										"title": "Xldb Update View Join"
									},
									{
										"type": "object",
										"properties": {
											"type": {
												"type": "string",
												"const": "xldb_add_view_column",
												"description": "The name of the tool to run."
											},
											"xldb_add_view_column": {
												"type": "object",
												"properties": {
													"viewId": {
														"type": "string",
														"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$",
														"description": "ID of the XLDB view to add a column to."
													},
													"name": {
														"type": "string",
														"description": "Name of the new view column."
													},
													"columnType": {
														"type": "string",
														"enum": [
															"text",
															"number",
															"checkbox",
															"date",
															"timestamp",
															"select",
															"multi_select",
															"person",
															"relation",
															"array_person",
															"array_relation"
														],
														"description": "One of: `text`, `number`, `checkbox`, `date`, `timestamp`, `select`, `multi_select`, `person`, `relation`, `array_person`, `array_relation`"
													},
													"expectedViewGeneration": {
														"type": "integer",
														"minimum": 1,
														"maximum": 9007199254740991,
														"description": "Current view generation from get view. Rejects changes made against an older view definition."
													},
													"config": {
														"type": "object",
														"properties": {
															"entity_type": {
																"type": "string",
																"const": "collection",
																"description": "Always `collection`"
															},
															"id": {
																"type": "string",
																"format": "uuid",
																"description": "ID of the Notion collection targeted by this relation column."
															}
														},
														"additionalProperties": false,
														"required": ["entity_type", "id"],
														"description": "Type-specific column settings, such as the target of a relation."
													}
												},
												"additionalProperties": false,
												"required": [
													"viewId",
													"name",
													"columnType",
													"expectedViewGeneration"
												],
												"description": "The parameters for the xldb_add_view_column tool. Create a property from an XL database view."
											}
										},
										"required": ["type", "xldb_add_view_column"],
										"title": "Xldb Add View Column"
									},
									{
										"type": "object",
										"properties": {
											"type": {
												"type": "string",
												"const": "xldb_add_column",
												"description": "The name of the tool to run."
											},
											"xldb_add_column": {
												"type": "object",
												"properties": {
													"tableId": {
														"type": "string",
														"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$",
														"description": "ID of the XLDB table to add the column to."
													},
													"name": {
														"type": "string",
														"description": "Stable name used to identify the column or select option."
													},
													"title": {
														"type": "string",
														"description": "Display title of the column or select option."
													},
													"columnType": {
														"type": "string",
														"enum": [
															"text",
															"number",
															"checkbox",
															"date",
															"timestamp",
															"select",
															"multi_select",
															"person",
															"relation",
															"array_person",
															"array_relation"
														],
														"description": "One of: `text`, `number`, `checkbox`, `date`, `timestamp`, `select`, `multi_select`, `person`, `relation`, `array_person`, `array_relation`"
													},
													"config": {
														"type": "object",
														"properties": {
															"entity_type": {
																"type": "string",
																"const": "collection",
																"description": "Always `collection`"
															},
															"id": {
																"type": "string",
																"format": "uuid",
																"description": "ID of the Notion collection targeted by this relation column."
															}
														},
														"additionalProperties": false,
														"required": ["entity_type", "id"],
														"description": "Type-specific column settings, such as the target of a relation."
													},
													"mutability": {
														"type": "string",
														"enum": ["read_only", "read_write"],
														"description": "One of: `read_only`, `read_write`"
													},
													"selectOptions": {
														"type": "array",
														"items": {
															"type": "object",
															"properties": {
																"name": {
																	"type": "string",
																	"description": "Stable name used to identify the column or select option."
																},
																"title": {
																	"type": "string",
																	"description": "Display title of the column or select option."
																},
																"color": {
																	"type": "string",
																	"description": "Display color of the select option."
																}
															},
															"additionalProperties": false,
															"required": ["name", "title"]
														},
														"description": "Available options for select and multi-select columns."
													}
												},
												"additionalProperties": false,
												"required": ["tableId", "name", "title", "columnType"],
												"description": "The parameters for the xldb_add_column tool. Create a column in an XL database table."
											}
										},
										"required": ["type", "xldb_add_column"],
										"title": "Xldb Add Column"
									},
									{
										"type": "object",
										"properties": {
											"type": {
												"type": "string",
												"const": "xldb_optimize_column",
												"description": "The name of the tool to run."
											},
											"xldb_optimize_column": {
												"type": "object",
												"properties": {
													"tableId": {
														"type": "string",
														"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$",
														"description": "ID of the XL database table."
													},
													"columnId": {
														"type": "string",
														"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$",
														"description": "ID of the column to inspect."
													}
												},
												"additionalProperties": false,
												"required": ["tableId", "columnId"],
												"description": "The parameters for the xldb_optimize_column tool. Create or reuse the indexes that make an XL database column faster to filter and sort."
											}
										},
										"required": ["type", "xldb_optimize_column"],
										"title": "Xldb Optimize Column"
									},
									{
										"type": "object",
										"properties": {
											"type": {
												"type": "string",
												"const": "xldb_unoptimize_column",
												"description": "The name of the tool to run."
											},
											"xldb_unoptimize_column": {
												"type": "object",
												"properties": {
													"tableId": {
														"type": "string",
														"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$",
														"description": "ID of the XL database table."
													},
													"columnId": {
														"type": "string",
														"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$",
														"description": "ID of the column to inspect."
													}
												},
												"additionalProperties": false,
												"required": ["tableId", "columnId"],
												"description": "The parameters for the xldb_unoptimize_column tool. Remove the optimization indexes for an XL database column. Column data is preserved."
											}
										},
										"required": ["type", "xldb_unoptimize_column"],
										"title": "Xldb Unoptimize Column"
									},
									{
										"type": "object",
										"properties": {
											"type": {
												"type": "string",
												"const": "xldb_get_column_optimization",
												"description": "The name of the tool to run."
											},
											"xldb_get_column_optimization": {
												"type": "object",
												"properties": {
													"tableId": {
														"type": "string",
														"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$",
														"description": "ID of the XL database table."
													},
													"columnId": {
														"type": "string",
														"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$",
														"description": "ID of the column to inspect."
													}
												},
												"additionalProperties": false,
												"required": ["tableId", "columnId"],
												"description": "The parameters for the xldb_get_column_optimization tool. Read whether an XL database column is optimized and inspect its index build status."
											}
										},
										"required": ["type", "xldb_get_column_optimization"],
										"title": "Xldb Get Column Optimization"
									},
									{
										"type": "object",
										"properties": {
											"type": {
												"type": "string",
												"const": "xldb_get_table_optimization_context",
												"description": "The name of the tool to run."
											},
											"xldb_get_table_optimization_context": {
												"type": "object",
												"properties": {
													"tableId": {
														"type": "string",
														"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$",
														"description": "ID of the XL database table."
													}
												},
												"additionalProperties": false,
												"required": ["tableId"],
												"description": "The parameters for the xldb_get_table_optimization_context tool. Read an XL database table's indexes, view filters and sorts, and column usage to plan optimizations."
											}
										},
										"required": ["type", "xldb_get_table_optimization_context"],
										"title": "Xldb Get Table Optimization Context"
									},
									{
										"type": "object",
										"properties": {
											"type": {
												"type": "string",
												"const": "xldb_query_rows",
												"description": "The name of the tool to run."
											},
											"xldb_query_rows": {
												"type": "object",
												"properties": {
													"tableId": {
														"type": "string",
														"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$",
														"description": "ID of the XLDB table to query."
													},
													"request": {
														"type": "object",
														"properties": {
															"explain": {
																"type": "string",
																"enum": ["plan", "analyze"],
																"description": "One of: `plan`, `analyze`"
															},
															"query": {
																"type": "object",
																"properties": {
																	"search": {
																		"type": "string",
																		"description": "Text to search for in row values."
																	},
																	"filter": {
																		"description": "XLDB filter expression to apply to rows."
																	},
																	"sorts": {
																		"type": "array",
																		"items": {
																			"type": "object",
																			"properties": {
																				"columnId": {
																					"type": "string",
																					"pattern": "^(?:[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}|(?:join|collection_join):[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}:[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})$",
																					"description": "ID of the column to sort by."
																				},
																				"direction": {
																					"type": "string",
																					"enum": ["asc", "desc"],
																					"description": "One of: `asc`, `desc`"
																				}
																			},
																			"additionalProperties": false,
																			"required": ["columnId", "direction"]
																		},
																		"description": "Columns to sort by, in priority order."
																	},
																	"rowIds": {
																		"type": "array",
																		"items": {
																			"type": "string",
																			"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"
																		},
																		"description": "Restrict the query to these row IDs."
																	}
																},
																"additionalProperties": false,
																"description": "Filters, sorting, and search to apply to this query."
															},
															"columns": {
																"type": "array",
																"items": {
																	"type": "string"
																},
																"description": "Column IDs to return. Omit to return all projected columns."
															},
															"limit": {
																"type": "number",
																"description": "Maximum number of rows to return in this page."
															},
															"cursor": {
																"type": "string",
																"description": "Opaque nextCursor from the previous response. Use with the same query."
															},
															"offset": {
																"type": "number",
																"description": "NextOffset from the previous response for queries using offset pagination."
															}
														},
														"additionalProperties": false,
														"description": "Query options, projected columns, and page position."
													}
												},
												"additionalProperties": false,
												"required": ["tableId", "request"],
												"description": "The parameters for the xldb_query_rows tool. Query XL database table rows with filters, sorts, pagination, and optional query analysis."
											}
										},
										"required": ["type", "xldb_query_rows"],
										"title": "Xldb Query Rows"
									},
									{
										"type": "object",
										"properties": {
											"type": {
												"type": "string",
												"const": "xldb_query_view_rows",
												"description": "The name of the tool to run."
											},
											"xldb_query_view_rows": {
												"type": "object",
												"properties": {
													"viewId": {
														"type": "string",
														"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$",
														"description": "ID of the XLDB view to query."
													},
													"request": {
														"type": "object",
														"properties": {
															"explain": {
																"type": "string",
																"enum": ["plan", "analyze"],
																"description": "One of: `plan`, `analyze`"
															},
															"query": {
																"type": "object",
																"properties": {
																	"search": {
																		"type": "string",
																		"description": "Text to search for in row values."
																	},
																	"filter": {
																		"description": "XLDB filter expression to apply to rows."
																	},
																	"sorts": {
																		"type": "array",
																		"items": {
																			"type": "object",
																			"properties": {
																				"columnId": {
																					"type": "string",
																					"pattern": "^(?:[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}|(?:join|collection_join):[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}:[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})$",
																					"description": "ID of the column to sort by."
																				},
																				"direction": {
																					"type": "string",
																					"enum": ["asc", "desc"],
																					"description": "One of: `asc`, `desc`"
																				}
																			},
																			"additionalProperties": false,
																			"required": ["columnId", "direction"]
																		},
																		"description": "Columns to sort by, in priority order."
																	},
																	"rowIds": {
																		"type": "array",
																		"items": {
																			"type": "string",
																			"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"
																		},
																		"description": "Restrict the query to these row IDs."
																	}
																},
																"additionalProperties": false,
																"description": "Filters, sorting, and search to apply to this query."
															},
															"columns": {
																"type": "array",
																"items": {
																	"type": "string"
																},
																"description": "Column IDs to return. Omit to return all projected columns."
															},
															"limit": {
																"type": "number",
																"description": "Maximum number of rows to return in this page."
															},
															"cursor": {
																"type": "string",
																"description": "Opaque nextCursor from the previous response. Use with the same query."
															},
															"offset": {
																"type": "number",
																"description": "NextOffset from the previous response for queries using offset pagination."
															}
														},
														"additionalProperties": false,
														"description": "Query options, projected columns, and page position."
													}
												},
												"additionalProperties": false,
												"required": ["viewId", "request"],
												"description": "The parameters for the xldb_query_view_rows tool. Query XL database view rows with filters, sorts, pagination, and optional query analysis."
											}
										},
										"required": ["type", "xldb_query_view_rows"],
										"title": "Xldb Query View Rows"
									},
									{
										"type": "object",
										"properties": {
											"type": {
												"type": "string",
												"const": "xldb_get_view_joins",
												"description": "The name of the tool to run."
											},
											"xldb_get_view_joins": {
												"type": "object",
												"properties": {
													"viewId": {
														"type": "string",
														"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$",
														"description": "ID of the XL database view to read."
													}
												},
												"additionalProperties": false,
												"required": ["viewId"],
												"description": "The parameters for the xldb_get_view_joins tool. Read an XL database view's joins and their selected columns."
											}
										},
										"required": ["type", "xldb_get_view_joins"],
										"title": "Xldb Get View Joins"
									},
									{
										"type": "object",
										"properties": {
											"type": {
												"type": "string",
												"const": "xldb_detach_view_data_source",
												"description": "The name of the tool to run."
											},
											"xldb_detach_view_data_source": {
												"type": "object",
												"properties": {
													"viewId": {
														"type": "string",
														"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$",
														"description": "ID of the XLDB view to disconnect from its Notion database."
													},
													"collectionId": {
														"type": "string",
														"format": "uuid",
														"description": "Connected Notion database ID. Retain this ID when retrying a detach that stopped partway through."
													}
												},
												"additionalProperties": false,
												"required": ["viewId"],
												"description": "The parameters for the xldb_detach_view_data_source tool. Stop syncing an XL database view into Notion. Keep its pages and make them editable."
											}
										},
										"required": ["type", "xldb_detach_view_data_source"],
										"title": "Xldb Detach View Data Source"
									},
									{
										"type": "object",
										"properties": {
											"type": {
												"type": "string",
												"const": "xldb_apply_rows",
												"description": "The name of the tool to run."
											},
											"xldb_apply_rows": {
												"type": "object",
												"properties": {
													"tableId": {
														"type": "string",
														"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$",
														"description": "ID of the XLDB table to write rows to."
													},
													"operations": {
														"type": "array",
														"items": {
															"type": "object",
															"properties": {
																"type": {
																	"type": "string",
																	"const": "upsert",
																	"description": "Always `upsert`"
																},
																"key": {
																	"type": "object",
																	"additionalProperties": true,
																	"description": "Column names and values that uniquely identify the row."
																},
																"values": {
																	"type": "object",
																	"additionalProperties": true,
																	"description": "Column names and values to insert or update."
																}
															},
															"additionalProperties": false,
															"required": ["type", "key", "values"]
														},
														"maxItems": 1000,
														"minItems": 1,
														"description": "Row upserts to apply. Each key must match a unique constraint."
													}
												},
												"additionalProperties": false,
												"required": ["tableId", "operations"],
												"description": "The parameters for the xldb_apply_rows tool. Insert or update XL database rows by their unique keys, in batches of up to 1,000 rows. Keep each request under 500 KB."
											}
										},
										"required": ["type", "xldb_apply_rows"],
										"title": "Xldb Apply Rows"
									},
									{
										"type": "object",
										"properties": {
											"type": {
												"type": "string",
												"const": "xldb_apply_table",
												"description": "The name of the tool to run."
											},
											"xldb_apply_table": {
												"type": "object",
												"properties": {
													"table": {
														"type": "object",
														"properties": {
															"name": {
																"type": "string",
																"description": "Stable name of the table or column."
															},
															"title": {
																"type": "string",
																"description": "Display title of the table or column."
															},
															"schema": {
																"type": "object",
																"properties": {
																	"columns": {
																		"type": "array",
																		"items": {
																			"type": "object",
																			"properties": {
																				"name": {
																					"type": "string",
																					"description": "Stable name of the table or column."
																				},
																				"title": {
																					"type": "string",
																					"description": "Display title of the table or column."
																				},
																				"type": {
																					"type": "string",
																					"enum": [
																						"text",
																						"number",
																						"checkbox",
																						"date",
																						"timestamp",
																						"select",
																						"multi_select",
																						"person",
																						"relation",
																						"array_person",
																						"array_relation"
																					],
																					"description": "One of: `text`, `number`, `checkbox`, `date`, `timestamp`, `select`, `multi_select`, `person`, `relation`, `array_person`, `array_relation`"
																				},
																				"config": {
																					"type": "object",
																					"properties": {
																						"entity_type": {
																							"type": "string",
																							"const": "collection",
																							"description": "Always `collection`"
																						},
																						"id": {
																							"type": "string",
																							"format": "uuid",
																							"description": "ID of the Notion collection targeted by this relation column."
																						}
																					},
																					"additionalProperties": false,
																					"required": ["entity_type", "id"],
																					"description": "Type-specific column settings, such as the target of a relation."
																				},
																				"mutability": {
																					"type": "string",
																					"enum": ["read_only", "read_write"],
																					"description": "One of: `read_only`, `read_write`"
																				},
																				"selectOptions": {
																					"type": "array",
																					"items": {
																						"type": "object",
																						"properties": {
																							"name": {
																								"type": "string",
																								"description": "Stable name used to identify the column or select option."
																							},
																							"title": {
																								"type": "string",
																								"description": "Display title of the column or select option."
																							},
																							"color": {
																								"type": "string",
																								"description": "Display color of the select option."
																							}
																						},
																						"additionalProperties": false,
																						"required": ["name", "title"]
																					},
																					"description": "Available options for select and multi-select columns."
																				}
																			},
																			"additionalProperties": false,
																			"required": ["name", "title", "type"]
																		},
																		"description": "Column definitions for the desired table."
																	},
																	"uniqueConstraints": {
																		"type": "array",
																		"items": {
																			"type": "object",
																			"properties": {
																				"columns": {
																					"type": "array",
																					"items": {
																						"type": "string"
																					},
																					"description": "Column names that together form this unique constraint."
																				}
																			},
																			"additionalProperties": false,
																			"required": ["columns"]
																		},
																		"description": "Groups of column names whose combined values must be unique."
																	}
																},
																"additionalProperties": false,
																"required": ["columns", "uniqueConstraints"],
																"description": "Desired columns and unique constraints."
															}
														},
														"additionalProperties": false,
														"required": ["name", "title", "schema"],
														"description": "Desired table definition to plan or apply."
													},
													"expectedCurrentFingerprint": {
														"type": "string",
														"description": "Current schema fingerprint returned by the plan operation."
													},
													"planFingerprint": {
														"type": "string",
														"description": "Plan fingerprint returned by the plan operation. Apply the same desired definition."
													}
												},
												"additionalProperties": false,
												"required": [
													"table",
													"expectedCurrentFingerprint",
													"planFingerprint"
												],
												"description": "The parameters for the xldb_apply_table tool. Apply a reviewed XL database table schema using the current and plan fingerprints returned by planning."
											}
										},
										"required": ["type", "xldb_apply_table"],
										"title": "Xldb Apply Table"
									},
									{
										"type": "object",
										"properties": {
											"type": {
												"type": "string",
												"const": "xldb_plan_table",
												"description": "The name of the tool to run."
											},
											"xldb_plan_table": {
												"type": "object",
												"properties": {
													"table": {
														"type": "object",
														"properties": {
															"name": {
																"type": "string",
																"description": "Stable name of the table or column."
															},
															"title": {
																"type": "string",
																"description": "Display title of the table or column."
															},
															"schema": {
																"type": "object",
																"properties": {
																	"columns": {
																		"type": "array",
																		"items": {
																			"type": "object",
																			"properties": {
																				"name": {
																					"type": "string",
																					"description": "Stable name of the table or column."
																				},
																				"title": {
																					"type": "string",
																					"description": "Display title of the table or column."
																				},
																				"type": {
																					"type": "string",
																					"enum": [
																						"text",
																						"number",
																						"checkbox",
																						"date",
																						"timestamp",
																						"select",
																						"multi_select",
																						"person",
																						"relation",
																						"array_person",
																						"array_relation"
																					],
																					"description": "One of: `text`, `number`, `checkbox`, `date`, `timestamp`, `select`, `multi_select`, `person`, `relation`, `array_person`, `array_relation`"
																				},
																				"config": {
																					"type": "object",
																					"properties": {
																						"entity_type": {
																							"type": "string",
																							"const": "collection",
																							"description": "Always `collection`"
																						},
																						"id": {
																							"type": "string",
																							"format": "uuid",
																							"description": "ID of the Notion collection targeted by this relation column."
																						}
																					},
																					"additionalProperties": false,
																					"required": ["entity_type", "id"],
																					"description": "Type-specific column settings, such as the target of a relation."
																				},
																				"mutability": {
																					"type": "string",
																					"enum": ["read_only", "read_write"],
																					"description": "One of: `read_only`, `read_write`"
																				},
																				"selectOptions": {
																					"type": "array",
																					"items": {
																						"type": "object",
																						"properties": {
																							"name": {
																								"type": "string",
																								"description": "Stable name used to identify the column or select option."
																							},
																							"title": {
																								"type": "string",
																								"description": "Display title of the column or select option."
																							},
																							"color": {
																								"type": "string",
																								"description": "Display color of the select option."
																							}
																						},
																						"additionalProperties": false,
																						"required": ["name", "title"]
																					},
																					"description": "Available options for select and multi-select columns."
																				}
																			},
																			"additionalProperties": false,
																			"required": ["name", "title", "type"]
																		},
																		"description": "Column definitions for the desired table."
																	},
																	"uniqueConstraints": {
																		"type": "array",
																		"items": {
																			"type": "object",
																			"properties": {
																				"columns": {
																					"type": "array",
																					"items": {
																						"type": "string"
																					},
																					"description": "Column names that together form this unique constraint."
																				}
																			},
																			"additionalProperties": false,
																			"required": ["columns"]
																		},
																		"description": "Groups of column names whose combined values must be unique."
																	}
																},
																"additionalProperties": false,
																"required": ["columns", "uniqueConstraints"],
																"description": "Desired columns and unique constraints."
															}
														},
														"additionalProperties": false,
														"required": ["name", "title", "schema"],
														"description": "Desired table definition to plan or apply."
													}
												},
												"additionalProperties": false,
												"required": ["table"],
												"description": "The parameters for the xldb_plan_table tool. Preview changes needed to create or update an XL database table. This does not apply the changes."
											}
										},
										"required": ["type", "xldb_plan_table"],
										"title": "Xldb Plan Table"
									},
									{
										"type": "object",
										"properties": {
											"type": {
												"type": "string",
												"const": "xldb_get_view",
												"description": "The name of the tool to run."
											},
											"xldb_get_view": {
												"type": "object",
												"properties": {
													"viewId": {
														"type": "string",
														"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$",
														"description": "ID of the XL database view to read."
													}
												},
												"additionalProperties": false,
												"required": ["viewId"],
												"description": "The parameters for the xldb_get_view tool. Read an XL database view's filters, sorts, and projected columns."
											}
										},
										"required": ["type", "xldb_get_view"],
										"title": "Xldb Get View"
									},
									{
										"type": "object",
										"properties": {
											"type": {
												"type": "string",
												"const": "xldb_list_views",
												"description": "The name of the tool to run."
											},
											"xldb_list_views": {
												"type": "object",
												"properties": {
													"tableId": {
														"type": "string",
														"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$",
														"description": "ID of the XL database table."
													}
												},
												"additionalProperties": false,
												"required": ["tableId"],
												"description": "The parameters for the xldb_list_views tool. List an XL database table's views."
											}
										},
										"required": ["type", "xldb_list_views"],
										"title": "Xldb List Views"
									},
									{
										"type": "object",
										"properties": {
											"type": {
												"type": "string",
												"const": "xldb_get_table_schema",
												"description": "The name of the tool to run."
											},
											"xldb_get_table_schema": {
												"type": "object",
												"properties": {
													"tableId": {
														"type": "string",
														"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$",
														"description": "ID of the XL database table."
													}
												},
												"additionalProperties": false,
												"required": ["tableId"],
												"description": "The parameters for the xldb_get_table_schema tool. Read an XL database table's columns, select options, and unique constraints."
											}
										},
										"required": ["type", "xldb_get_table_schema"],
										"title": "Xldb Get Table Schema"
									},
									{
										"type": "object",
										"properties": {
											"type": {
												"type": "string",
												"const": "xldb_get_workspace_status",
												"description": "The name of the tool to run."
											},
											"xldb_get_workspace_status": {
												"type": "object",
												"properties": {},
												"additionalProperties": false,
												"description": "The parameters for the xldb_get_workspace_status tool. Read the provisioning status of this workspace's XL database storage."
											}
										},
										"required": ["type", "xldb_get_workspace_status"],
										"title": "Xldb Get Workspace Status"
									},
									{
										"type": "object",
										"properties": {
											"type": {
												"type": "string",
												"const": "xldb_list_tables",
												"description": "The name of the tool to run."
											},
											"xldb_list_tables": {
												"type": "object",
												"properties": {
													"cursor": {
														"type": "string",
														"pattern": "^[A-Za-z0-9_-]{1,4096}$",
														"description": "Opaque pagination cursor from the previous response's nextCursor."
													}
												},
												"additionalProperties": false,
												"description": "The parameters for the xldb_list_tables tool. List a page of the space's XL database tables."
											}
										},
										"required": ["type", "xldb_list_tables"],
										"title": "Xldb List Tables"
									},
									{
										"type": "object",
										"properties": {
											"type": {
												"type": "string",
												"const": "get_version_changes",
												"description": "The name of the tool to run."
											},
											"get_version_changes": {
												"type": "object",
												"properties": {
													"page": {
														"type": "string",
														"description": "The page or database to read: a page URL, database URL, data source (collection://) URL, or ID."
													},
													"start_time": {
														"type": "string",
														"description": "Start of the time range, not included, as an ISO 8601 time with a time zone, such as \"2026-10-10T18:05:02Z\". Leave it out unless the user names a time; it defaults to 24 hours before end_time."
													},
													"end_time": {
														"type": "string",
														"description": "End of the time range, included, as an ISO 8601 time with a time zone, such as \"2026-10-10T18:05:02Z\". Must be after start_time. Leave it out unless the user names a time; it defaults to now."
													},
													"authors": {
														"type": "array",
														"items": {
															"type": "string"
														},
														"maxItems": 100,
														"minItems": 1,
														"description": "Only return records that these people or agents changed: user:// URLs or agent URLs. Each record's before and after still include everyone's edits in the range, and contributors lists everyone who edited it."
													},
													"sources": {
														"type": "array",
														"items": {
															"type": "string",
															"enum": [
																"notion_ai",
																"custom_agent",
																"mcp",
																"database_automation"
															],
															"description": "One of: `notion_ai`, `custom_agent`, `mcp`, `database_automation`"
														},
														"maxItems": 4,
														"minItems": 1,
														"description": "Only return records changed through these, such as [\"notion_ai\", \"custom_agent\", \"mcp\"] for changes made by AI. Each record's before and after still include every edit in the range, and contributors lists everyone who edited it."
													}
												},
												"additionalProperties": false,
												"required": ["page"],
												"description": "The parameters for the get_version_changes tool. List what changed in a Notion page or database between two times, who changed it, and whether they used AI, an agent, or an MCP client. Each block, property, row, data source, or view that changed is listed once, with how it looked at the start and at the end of the time range. The range defaults to the last 24 hours. Filter by authors or sources to list only the records those people, agents, or kinds of edits touched; before and after still include everyone's edits, so use a shorter range to isolate one author. To read the whole page at a time, use view_version. Comments are not listed. Changes inside a page's inline databases are not listed either; pass an inline database's url to read them. Requires edit access to the page."
											}
										},
										"required": ["type", "get_version_changes"],
										"title": "Get Version Changes"
									},
									{
										"type": "object",
										"properties": {
											"type": {
												"type": "string",
												"const": "view_version",
												"description": "The name of the tool to run."
											},
											"view_version": {
												"type": "object",
												"properties": {
													"page": {
														"type": "string",
														"description": "The page or database to read: a page URL, database URL, data source (collection://) URL, or ID."
													},
													"time": {
														"type": "string",
														"description": "The moment to read, as an ISO 8601 time with a time zone offset. Convert the user's date and time in their own time zone, such as \"2026-10-10T14:05:02-04:00\" for 2:05 PM in New York. If the user names only a date, pick a time on that date in their time zone and tell them which."
													},
													"cursor": {
														"type": "string",
														"description": "A database's next_cursor, to read its next rows. Pass the same page and time as the call that returned it."
													}
												},
												"additionalProperties": false,
												"required": ["page", "time"],
												"description": "The parameters for the view_version tool. Read a Notion page or database as it looked at a past time. The open page and other reads show only current content, so use this for any question about what a page said, contained, or looked like at an earlier date, even when the page is already open. A page returns its Markdown and properties; each inline database is a database tag, and you can pass that tag's url to this tool to read the database at the same time. A database returns its data sources, views, and rows. A linked database leaves out the data sources, views, and rows that belong to another database. Requires edit access to the page."
											}
										},
										"required": ["type", "view_version"],
										"title": "View Version"
									},
									{
										"type": "object",
										"properties": {
											"type": {
												"type": "string",
												"const": "restore_version",
												"description": "The name of the tool to run."
											},
											"restore_version": {
												"type": "object",
												"properties": {
													"page": {
														"type": "string",
														"description": "The page or database to restore: a page URL, database URL, or ID. Not a data source (collection://) URL."
													},
													"time": {
														"type": "string",
														"description": "The past moment to restore to, as an ISO 8601 time with a time zone, such as \"2026-10-10T18:05:02Z\". The page keeps every edit made at or before it. To remove a change, use the last_edit_time of the change before it, not the change's own first_edit_time."
													},
													"include_inline_databases": {
														"type": "boolean",
														"description": "For a page only: also restore the databases inside the page. Defaults to false. If the page has databases and the user did not say whether to restore them, ask first."
													},
													"database_options": {
														"type": "object",
														"properties": {
															"properties": {
																"type": "boolean",
																"description": "Restore the database's properties (its schema). Defaults to true."
															},
															"row_property_values": {
																"type": "boolean",
																"description": "Restore each row's property values. Defaults to true."
															},
															"row_titles": {
																"type": "boolean",
																"description": "Restore each row's title. Defaults to true."
															}
														},
														"additionalProperties": false,
														"description": "For a database only: which parts to restore. Leave it out to restore all of them."
													},
													"user_confirmed": {
														"type": "boolean",
														"description": "Set to true only after the user has seen what this restore will change and said yes. Without it, nothing is restored and the call returns what it would do."
													}
												},
												"additionalProperties": false,
												"required": ["page", "time"],
												"description": "The parameters for the restore_version tool. Restore a whole Notion page or database to how it looked at a past time. This undoes every edit made after that time, including other people's, and removes comments added after it. To undo one change but keep later edits, edit the page instead. Before you call it, use get_version_changes from that time to now to see what will be undone, and tell the user. If the page has databases inside it and the user did not say whether to restore them, ask. Requires edit access. This tool only starts the restore, which then runs in the background, so the page can look unchanged for a short time. To undo a restore, restore the page to its started_at time."
											}
										},
										"required": ["type", "restore_version"],
										"title": "Restore Version"
									},
									{
										"type": "object",
										"properties": {
											"type": {
												"type": "string",
												"const": "list_page_backlinks",
												"description": "The name of the tool to run."
											},
											"list_page_backlinks": {
												"type": "object",
												"properties": {
													"page_id": {
														"type": "string",
														"description": "ID or URL of the page or database to find backlinks for."
													},
													"types": {
														"type": "array",
														"items": {
															"type": "string",
															"enum": [
																"page_mention",
																"link_to_page",
																"property_mention",
																"comment_mention"
															],
															"description": "One of: `page_mention`, `link_to_page`, `property_mention`, `comment_mention`"
														},
														"maxItems": 4,
														"description": "Only return these kinds of backlinks. page_mention is an inline @-mention in text, a title, or a caption; link_to_page is a link-to-page block; property_mention is a mention in a database property; comment_mention is a mention in a comment. Omit for all kinds."
													},
													"page_size": {
														"type": "integer",
														"minimum": 1,
														"maximum": 100,
														"description": "Maximum backlinks to return (1-100; default 25)."
													},
													"cursor": {
														"type": "string",
														"description": "next_cursor from the previous call."
													}
												},
												"additionalProperties": false,
												"required": ["page_id"],
												"description": "The parameters for the list_page_backlinks tool. List the pages that link to or mention a Notion page (backlinks), in the same workspace. Returns IDs, titles and URLs only; fetch a result to read it. Only pages you can open are listed. Follow next_cursor for more."
											}
										},
										"required": ["type", "list_page_backlinks"],
										"title": "List Page Backlinks"
									},
									{
										"type": "object",
										"properties": {
											"type": {
												"type": "string",
												"const": "create_workspace_bookmark",
												"description": "The name of the tool to run."
											},
											"create_workspace_bookmark": {
												"type": "object",
												"properties": {
													"name": {
														"type": "string",
														"description": "A human-readable name for the workspace bookmark."
													},
													"timestamp": {
														"oneOf": [
															{
																"type": "string"
															},
															{
																"type": "number"
															}
														],
														"description": "The point in time where this bookmark sits. Use an ISO 8601 timestamp or epoch milliseconds; defaults to the current time when omitted."
													}
												},
												"additionalProperties": false,
												"description": "The parameters for the create_workspace_bookmark tool. Available only by invitation during early alpha. General availability is coming soon. This contract may change. Save a timestamp that an agent can use to read any page's historical content."
											}
										},
										"required": ["type", "create_workspace_bookmark"],
										"title": "Create Workspace Bookmark"
									},
									{
										"type": "object",
										"properties": {
											"type": {
												"type": "string",
												"const": "list_workspace_bookmarks",
												"description": "The name of the tool to run."
											},
											"list_workspace_bookmarks": {
												"type": "object",
												"properties": {},
												"additionalProperties": false,
												"description": "The parameters for the list_workspace_bookmarks tool. Available only by invitation during early alpha. General availability is coming soon. This contract may change. List saved workspace timestamps, newest first."
											}
										},
										"required": ["type", "list_workspace_bookmarks"],
										"title": "List Workspace Bookmarks"
									},
									{
										"type": "object",
										"properties": {
											"type": {
												"type": "string",
												"const": "delete_workspace_bookmark",
												"description": "The name of the tool to run."
											},
											"delete_workspace_bookmark": {
												"type": "object",
												"properties": {
													"timestamp": {
														"oneOf": [
															{
																"type": "string"
															},
															{
																"type": "number"
															}
														],
														"description": "The point in time of the bookmark to delete. Use an ISO 8601 timestamp or epoch milliseconds."
													}
												},
												"additionalProperties": false,
												"required": ["timestamp"],
												"description": "The parameters for the delete_workspace_bookmark tool. Available only by invitation during early alpha. General availability is coming soon. This contract may change. Delete one workspace bookmark by its timestamp."
											}
										},
										"required": ["type", "delete_workspace_bookmark"],
										"title": "Delete Workspace Bookmark"
									},
									{
										"type": "object",
										"properties": {
											"type": {
												"type": "string",
												"const": "load_permissions",
												"description": "The name of the tool to run."
											},
											"load_permissions": {
												"type": "object",
												"properties": {
													"url": {
														"type": "string",
														"description": "A Notion page or database URL."
													}
												},
												"additionalProperties": false,
												"required": ["url"],
												"description": "The parameters for the load_permissions tool. Read explicit user, workspace, and public sharing permissions for a Notion page or database URL. This is not a complete explanation of effective access: inherited, group, teamspace, and bot permissions are not returned. Read this before update_permission."
											}
										},
										"required": ["type", "load_permissions"],
										"title": "Load Permissions"
									},
									{
										"type": "object",
										"properties": {
											"type": {
												"type": "string",
												"const": "update_permission",
												"description": "The name of the tool to run."
											},
											"update_permission": {
												"type": "object",
												"properties": {
													"url": {
														"type": "string",
														"description": "The Notion page or database URL whose sharing permission will change."
													},
													"item": {
														"oneOf": [
															{
																"type": "object",
																"properties": {
																	"type": {
																		"type": "string",
																		"const": "user",
																		"description": "Always `user`"
																	},
																	"userUrl": {
																		"type": "string",
																		"description": "The recipient’s Notion user URL, in user:// format."
																	},
																	"accessLevel": {
																		"type": "string",
																		"enum": [
																			"full_access",
																			"can_edit",
																			"can_edit_content",
																			"can_comment",
																			"can_view",
																			"no_access"
																		],
																		"description": "One of: `full_access`, `can_edit`, `can_edit_content`, `can_comment`, `can_view`, `no_access`"
																	}
																},
																"additionalProperties": false,
																"required": ["type", "userUrl", "accessLevel"]
															},
															{
																"type": "object",
																"properties": {
																	"type": {
																		"type": "string",
																		"const": "public",
																		"description": "Always `public`"
																	},
																	"accessLevel": {
																		"type": "string",
																		"enum": [
																			"full_access",
																			"can_edit",
																			"can_edit_content",
																			"can_comment",
																			"can_view",
																			"no_access"
																		],
																		"description": "One of: `full_access`, `can_edit`, `can_edit_content`, `can_comment`, `can_view`, `no_access`"
																	},
																	"publicOptions": {
																		"type": "object",
																		"properties": {
																			"allowDuplicate": {
																				"type": "boolean",
																				"description": "Allow visitors with public access to duplicate the page."
																			},
																			"allowSearchEngineIndexing": {
																				"type": "boolean",
																				"description": "Allow search engines to index the published page."
																			},
																			"expirationTimestamp": {
																				"type": "number",
																				"description": "Expiration time for this public permission as a Unix timestamp in milliseconds."
																			},
																			"clearExpiration": {
																				"type": "boolean",
																				"description": "Remove the public permission expiration. Cannot be combined with expirationTimestamp."
																			},
																			"isPublicShareLink": {
																				"type": "boolean",
																				"description": "Enable public-link access. A public grant requires this or isSite to be true."
																			},
																			"isSite": {
																				"type": "boolean",
																				"description": "Publish as a Notion Site. A public grant requires this or isPublicShareLink to be true."
																			}
																		},
																		"additionalProperties": false,
																		"description": "Public-link or Notion Site options. Omitted fields preserve existing settings, including expiration. New grants disable duplication and search indexing unless explicitly enabled. Omit when removing access."
																	}
																},
																"additionalProperties": false,
																"required": ["type", "accessLevel"]
															},
															{
																"type": "object",
																"properties": {
																	"type": {
																		"type": "string",
																		"const": "workspace",
																		"description": "Always `workspace`"
																	},
																	"accessLevel": {
																		"type": "string",
																		"enum": [
																			"full_access",
																			"can_edit",
																			"can_edit_content",
																			"can_comment",
																			"can_view",
																			"no_access"
																		],
																		"description": "One of: `full_access`, `can_edit`, `can_edit_content`, `can_comment`, `can_view`, `no_access`"
																	}
																},
																"additionalProperties": false,
																"required": ["type", "accessLevel"]
															}
														],
														"description": "One explicit user, workspace, or public permission to set or remove. Use no_access to remove the grant."
													},
													"userConfirmed": {
														"type": "boolean",
														"description": "Set true only after the user has explicitly requested or approved this exact sharing change, including the recipient, access level, and any public-link or site options. Otherwise omit this to preview without saving."
													}
												},
												"additionalProperties": false,
												"required": ["url", "item"],
												"description": "The parameters for the update_permission tool. Set or remove exactly one explicit sharing permission on a Notion page or database. First load_permissions and preserve unrelated access. Requires unrestricted workspace membership, Full Access on the target, and a token with read_content and manage_permissions. Use the least-powerful access level; public sharing defaults to can_view unless the user explicitly requests more. For a public grant, publicOptions must set isPublicShareLink or isSite true. Site-only grants cannot have full_access. Omitted options preserve existing settings; set clearExpiration true to remove an expiration, without expirationTimestamp. Use no_access to remove access; user removal fails if inherited or other access would remain. Never change ancestor permissions without an explicit request. Set userConfirmed true only after the user requests or approves this exact recipient, access level, and public options; otherwise the call previews without saving. This does not manage groups, guests, ownership, or complete Sites settings."
											}
										},
										"required": ["type", "update_permission"],
										"title": "Update Permission"
									},
									{
										"type": "object",
										"properties": {
											"type": {
												"type": "string",
												"const": "get_sidebar_tabs",
												"description": "The name of the tool to run."
											},
											"get_sidebar_tabs": {
												"type": "object",
												"properties": {},
												"additionalProperties": false,
												"description": "The parameters for the get_sidebar_tabs tool. Get the current user's Notion sidebar tabs, in order, plus catalogs of the shortcuts and sections they can add. Shortcut groups are not returned or editable. Catalog examples are valid update_sidebar_tabs inputs, including configured New page shortcuts and database view sections. Each tab is independent: built-in items may appear in more than one tab. Call this before update_sidebar_tabs."
											}
										},
										"required": ["type", "get_sidebar_tabs"],
										"title": "Get Sidebar Tabs"
									},
									{
										"type": "object",
										"properties": {
											"type": {
												"type": "string",
												"const": "update_sidebar_tabs",
												"description": "The name of the tool to run."
											},
											"update_sidebar_tabs": {
												"type": "object",
												"required": ["tabs"],
												"additionalProperties": false,
												"properties": {
													"tabs": {
														"type": "array",
														"minItems": 1,
														"description": "The complete desired ordered tab list. Preserve an existing id to update it, omit id to create a tab, and omit an existing tab to remove it.",
														"items": {
															"type": "object",
															"required": ["name", "shortcuts", "sections"],
															"additionalProperties": false,
															"properties": {
																"id": {
																	"type": "string",
																	"description": "An id returned by get_sidebar_tabs. Omit only for a new tab."
																},
																"name": {
																	"type": "string",
																	"description": "The tab label shown in the sidebar."
																},
																"icon": {
																	"type": "string",
																	"description": "A Notion icon name or picker alias. Existing tabs preserve their icon when omitted; new tabs default to circle-dashed."
																},
																"shortcuts": {
																	"type": "array",
																	"uniqueItems": true,
																	"description": "Ordered shortcuts for the tab. Use ids or object forms from the shortcutCatalog returned by get_sidebar_tabs.",
																	"items": {
																		"oneOf": [
																			{
																				"type": "string",
																				"enum": [
																					"agent_companion",
																					"new_page",
																					"new_chat",
																					"new_meeting_note",
																					"new_database",
																					"new_agent",
																					"library",
																					"calendar",
																					"agents",
																					"skills",
																					"meeting_notes",
																					"tasks",
																					"marketplace"
																				]
																			},
																			{
																				"type": "object",
																				"required": ["type"],
																				"additionalProperties": false,
																				"properties": {
																					"type": {
																						"type": "string",
																						"enum": ["new_page"],
																						"description": "The new page item type."
																					},
																					"id": {
																						"type": "string",
																						"description": "Occurrence id from get_sidebar_tabs. Omit for a new shortcut."
																					},
																					"dataSourceUrl": {
																						"type": "string",
																						"description": "The collection:// URL of the destination data source. Use at most one of dataSourceUrl and pageUrl."
																					},
																					"pageUrl": {
																						"type": "string",
																						"description": "The Notion URL of a page to create subpages in. Use at most one of dataSourceUrl and pageUrl."
																					},
																					"viewId": {
																						"type": "string",
																						"format": "uuid",
																						"description": "An optional database view id in dataSourceUrl. New pages are created in that view."
																					},
																					"templateUrl": {
																						"type": "string",
																						"description": "An optional database template page URL that belongs to dataSourceUrl, or \"empty\" to create blank pages without the default template."
																					},
																					"label": {
																						"type": "string",
																						"description": "An optional custom label, limited to 150 characters. Prefer \"New {singular noun}\" when the database's created object is clear, for example \"New task\" for Tasks. Otherwise omit it to use the product default."
																					},
																					"icon": {
																						"type": "string",
																						"maxLength": 2000,
																						"description": "An optional custom icon override using tool-docs://notion/pages/notion-icons.md or a single emoji. Omit it to use the database icon, or the generic compose icon when the shortcut has no database. Set it only when the user requests an override or there is a clear semantic reason."
																					},
																					"openIn": {
																						"type": "string",
																						"enum": [
																							"side_peek",
																							"center_peek",
																							"full_page"
																						],
																						"description": "How pages opened from this item appear. Omit it to use the product default."
																					}
																				}
																			},
																			{
																				"type": "object",
																				"required": ["type", "pageUrl"],
																				"additionalProperties": false,
																				"properties": {
																					"type": {
																						"type": "string",
																						"enum": ["page_link"],
																						"description": "The page link item type."
																					},
																					"id": {
																						"type": "string",
																						"description": "Occurrence id from get_sidebar_tabs. Omit for a new shortcut."
																					},
																					"pageUrl": {
																						"type": "string",
																						"description": "The Notion URL of the page or database the shortcut navigates to. The shortcut always shows that target's own title and icon."
																					},
																					"viewId": {
																						"type": "string",
																						"format": "uuid",
																						"description": "An optional database view id. It must identify a view parented by the database in pageUrl. Omit it to open the user's most recently visited view."
																					},
																					"openIn": {
																						"type": "string",
																						"enum": [
																							"side_peek",
																							"center_peek",
																							"full_page"
																						],
																						"description": "How pages opened from this item appear. Omit it to use the product default."
																					}
																				}
																			},
																			{
																				"type": "object",
																				"required": ["type", "workflowId"],
																				"additionalProperties": false,
																				"properties": {
																					"type": {
																						"type": "string",
																						"enum": ["agent"],
																						"description": "The agent item type."
																					},
																					"id": {
																						"type": "string",
																						"description": "Occurrence id from get_sidebar_tabs. Omit for a new shortcut."
																					},
																					"workflowId": {
																						"type": "string",
																						"format": "uuid",
																						"description": "The id of the custom agent the shortcut navigates to."
																					}
																				}
																			},
																			{
																				"type": "object",
																				"required": ["type", "threadId"],
																				"additionalProperties": false,
																				"properties": {
																					"type": {
																						"type": "string",
																						"enum": ["chat_thread"],
																						"description": "The chat thread item type."
																					},
																					"id": {
																						"type": "string",
																						"description": "Occurrence id from get_sidebar_tabs. Omit for a new shortcut."
																					},
																					"threadId": {
																						"type": "string",
																						"format": "uuid",
																						"description": "The id of the AI chat thread the shortcut opens."
																					}
																				}
																			},
																			{
																				"type": "object",
																				"required": ["type"],
																				"additionalProperties": false,
																				"properties": {
																					"type": {
																						"type": "string",
																						"enum": ["chat_dashboard"],
																						"description": "The chat dashboard item type."
																					},
																					"id": {
																						"type": "string",
																						"description": "Occurrence id from get_sidebar_tabs. Omit for a new shortcut."
																					}
																				}
																			},
																			{
																				"type": "object",
																				"required": ["type"],
																				"additionalProperties": false,
																				"properties": {
																					"type": {
																						"type": "string",
																						"enum": ["settings"],
																						"description": "The settings item type."
																					},
																					"id": {
																						"type": "string",
																						"description": "Occurrence id from get_sidebar_tabs. Omit for a new shortcut."
																					},
																					"panel": {
																						"type": "string",
																						"enum": [
																							"profile",
																							"user_settings",
																							"notifications",
																							"mail_and_calendar",
																							"offline",
																							"settings",
																							"members",
																							"plans",
																							"billing",
																							"ai_usage_dashboard",
																							"subscription",
																							"security",
																							"identity_provisioning",
																							"admin_content_search",
																							"integrations",
																							"integrations_mcp",
																							"credentials",
																							"imports",
																							"teams",
																							"audit_log",
																							"analytics",
																							"public_pages",
																							"custom_emoji",
																							"verified_pages",
																							"requests",
																							"ai",
																							"meeting_notes",
																							"workers",
																							"developer",
																							"experiments",
																							"performance_toolbar",
																							"client_preview",
																							"personalization",
																							"user_similarity_scores",
																							"collection_debug",
																							"offline_mode_debug",
																							"design_previews",
																							"mobile_native"
																						],
																						"description": "An optional settings panel id. Omit it to open Settings without selecting a specific panel."
																					}
																				}
																			}
																		]
																	}
																},
																"sections": {
																	"type": "array",
																	"uniqueItems": true,
																	"description": "Ordered sections for the tab. Use ids or object forms from the sectionCatalog returned by get_sidebar_tabs.",
																	"items": {
																		"oneOf": [
																			{
																				"type": "string",
																				"enum": [
																					"favorites",
																					"teamspaces",
																					"shared",
																					"private",
																					"workspace",
																					"agents",
																					"chats",
																					"notion_apps",
																					"meetings_today",
																					"recents",
																					"myMeetings",
																					"developer",
																					"pinned_chats",
																					"unread_chats"
																				]
																			},
																			{
																				"type": "object",
																				"required": ["type"],
																				"additionalProperties": false,
																				"properties": {
																					"type": {
																						"type": "string",
																						"enum": [
																							"favorites",
																							"teamspaces",
																							"shared",
																							"private",
																							"workspace",
																							"agents",
																							"chats",
																							"notion_apps",
																							"meetings_today",
																							"recents",
																							"myMeetings",
																							"developer",
																							"pinned_chats",
																							"unread_chats"
																						],
																						"description": "The built-in section id."
																					},
																					"itemLimit": {
																						"type": "integer",
																						"minimum": 1,
																						"maximum": 100,
																						"description": "Maximum visible items for this tab's occurrence of the section. Use the string form instead to use the workspace default."
																					}
																				}
																			},
																			{
																				"type": "object",
																				"required": ["type", "viewUrl"],
																				"additionalProperties": false,
																				"properties": {
																					"type": {
																						"type": "string",
																						"enum": ["database_view"],
																						"description": "The database view section type."
																					},
																					"id": {
																						"type": "string",
																						"description": "Stable occurrence id returned by get_sidebar_tabs. Omit only when adding a new database view section."
																					},
																					"viewUrl": {
																						"type": "string",
																						"description": "An explicit view:// URL or Notion URL containing a v= view id. A database page URL without a view id is ambiguous and invalid."
																					},
																					"templateUrl": {
																						"type": "string",
																						"description": "An optional template page URL in the view's data source used by the section's New button, or \"empty\" to create blank pages without the default template."
																					},
																					"itemLimit": {
																						"type": "integer",
																						"minimum": 1,
																						"maximum": 100,
																						"description": "Maximum visible rows. Defaults to 5 when omitted."
																					},
																					"hidePageIcon": {
																						"type": "boolean",
																						"description": "Whether to hide page icons for rows in this section. Defaults to false."
																					},
																					"customName": {
																						"type": "string",
																						"maxLength": 150,
																						"description": "An optional sidebar-only name that replaces the underlying view name in this section's label. Omit it to use the view name."
																					},
																					"openIn": {
																						"type": "string",
																						"enum": [
																							"side_peek",
																							"center_peek",
																							"full_page"
																						],
																						"description": "How pages opened from this section appear. Omit it to use the database view's setting."
																					}
																				}
																			},
																			{
																				"type": "object",
																				"required": ["type", "teamspaceUrl"],
																				"additionalProperties": false,
																				"properties": {
																					"type": {
																						"type": "string",
																						"enum": ["teamspace"],
																						"description": "The teamspace item type."
																					},
																					"teamspaceUrl": {
																						"type": "string",
																						"description": "The teamspace:// URL or id of a teamspace the current user has joined."
																					}
																				}
																			},
																			{
																				"type": "string",
																				"enum": ["meeting_databases"]
																			}
																		]
																	}
																}
															}
														}
													}
												},
												"description": "The parameters for the update_sidebar_tabs tool. Replace the current user's complete, ordered Notion sidebar tab list. Use it to organize the sidebar around how the user works, for example a tab per workflow with its databases, teamspaces, and New page shortcuts. First call get_sidebar_tabs, then send back every tab, shortcut, and section to keep with its id. Omit an existing item to remove it, and omit id only for a new tab, configured shortcut, or database view section. Removing a tab also removes its shortcut groups. Rich objects describe their complete desired state, so omitting an optional field such as label, templateUrl, customName, openIn, or itemLimit clears it. Database view sections need a view:// URL or a Notion URL with a v= view id. Teamspace sections need a teamspace:// URL or a teamspace id from get_teams, for a teamspace the user has joined. Tab icons are Notion icon names such as home, checkmark-square, calendar, book, briefcase, people, inbox, folder, rocket, or chart-line. Check the returned config, and do not claim success unless the requested items are present."
											}
										},
										"required": ["type", "update_sidebar_tabs"],
										"title": "Update Sidebar Tabs"
									},
									{
										"type": "object",
										"properties": {
											"type": {
												"type": "string",
												"const": "set_page_notification_level",
												"description": "The name of the tool to run."
											},
											"set_page_notification_level": {
												"type": "object",
												"properties": {
													"page_id": {
														"type": "string",
														"description": "The ID or URL of the Notion page. Accepts a notion.so URL, a raw UUID with or without dashes, or a page:// URI."
													},
													"level": {
														"type": "string",
														"enum": ["all", "important", "comments", "none"],
														"description": "How much the calling user wants to hear about this page. \"all\" notifies on every comment and property change, and is accepted for pages inside any database. \"important\" notifies on every comment plus changes to Status, Assignee, and Due dates, and is accepted for pages inside a Tasks or Projects database. \"comments\" notifies on every comment and no property changes, and is accepted for pages that are not inside a Tasks or Projects database. \"none\" notifies only on replies to the user and @mentions of the user, and is accepted for any page."
													}
												},
												"additionalProperties": false,
												"required": ["page_id", "level"],
												"description": "The parameters for the set_page_notification_level tool. Set how much the current user is notified about a Notion page. This is the\n\"Notify me\" setting in the Notion app, and it only ever changes the calling\nuser's own notifications — it cannot subscribe or unsubscribe anyone else.\n\nLevels, and the pages each one is available for:\n- \"all\": every comment on the page, and every property change. Pages inside any\n  database.\n- \"important\": every comment, plus changes to Status, Assignee, and Due dates.\n  Pages inside a Tasks or Projects database.\n- \"comments\": every comment, and no property changes. Pages that are not inside\n  a Tasks or Projects database.\n- \"none\": only replies to the user and @mentions of the user. Any page."
											}
										},
										"required": ["type", "set_page_notification_level"],
										"title": "Set Page Notification Level"
									},
									{
										"type": "object",
										"properties": {
											"type": {
												"type": "string",
												"const": "update_page_favorites",
												"description": "The name of the tool to run."
											},
											"update_page_favorites": {
												"type": "object",
												"properties": {
													"page_urls": {
														"type": "array",
														"items": {
															"type": "string"
														},
														"maxItems": 100,
														"minItems": 1,
														"description": "Notion page or database URLs to favorite or unfavorite, in order."
													},
													"favorited": {
														"type": "boolean",
														"description": "true to favorite these pages; false to unfavorite them."
													},
													"position": {
														"oneOf": [
															{
																"type": "object",
																"properties": {
																	"type": {
																		"type": "string",
																		"const": "start",
																		"description": "Always `start`"
																	}
																},
																"additionalProperties": false,
																"required": ["type"]
															},
															{
																"type": "object",
																"properties": {
																	"type": {
																		"type": "string",
																		"const": "end",
																		"description": "Always `end`"
																	}
																},
																"additionalProperties": false,
																"required": ["type"]
															},
															{
																"type": "object",
																"properties": {
																	"type": {
																		"type": "string",
																		"const": "after_page",
																		"description": "Always `after_page`"
																	},
																	"page_url": {
																		"type": "string",
																		"description": "URL of a current favorite. The pages go right after it."
																	}
																},
																"additionalProperties": false,
																"required": ["type", "page_url"]
															}
														],
														"description": "Where to put the pages, in input order: start, end, or after_page (right after another favorite). Moves pages that are already favorites. Only valid when favorited is true. Without it, new favorites go to the top and existing favorites stay where they are."
													}
												},
												"additionalProperties": false,
												"required": ["page_urls", "favorited"],
												"description": "The parameters for the update_page_favorites tool. Favorite or unfavorite 1 to 100 Notion pages or databases for the current user. Set favorited to true to add them or false to remove them. New favorites appear at the top in input order; existing favorites keep their position. To reorder, pass position (start, end, or after_page with another favorite's URL): the pages go there in input order, whether or not they were already favorites. Repeating the request is a no-op. All additions must be accessible in the current workspace; removals also work for inaccessible or deleted favorites. If additions are inaccessible, the error lists all failed URLs and nothing changes. Retry with the remaining URLs. This changes only the current user's Favorites, not page permissions."
											}
										},
										"required": ["type", "update_page_favorites"],
										"title": "Update Page Favorites"
									},
									{
										"type": "object",
										"properties": {
											"type": {
												"type": "string",
												"const": "calendar_list_calendars",
												"description": "The name of the tool to run."
											},
											"calendar_list_calendars": {
												"properties": {
													"onlyAccountEmails": {
														"description": "Return only accounts linked to these email addresses. Useful to get calendars from a work account only for example. Do not specify if you are interested in getting the whole picture of someone's agenda across work and personal accounts.",
														"type": "array",
														"items": {
															"type": "string"
														}
													}
												},
												"type": "object",
												"additionalProperties": false,
												"description": "The parameters for the calendar_list_calendars tool. List calendars grouped by connected account. Use this to identify a target or conflict calendar before another Calendar operation."
											}
										},
										"required": ["type", "calendar_list_calendars"],
										"title": "Calendar List Calendars"
									},
									{
										"type": "object",
										"properties": {
											"type": {
												"type": "string",
												"const": "calendar_list_events",
												"description": "The name of the tool to run."
											},
											"calendar_list_events": {
												"description": "The parameters for the calendar_list_events tool. List the user's events across connected calendars within a time range. Use this to inspect the user's own schedule or identify events before changing them.",
												"required": ["timeMin", "timeMax", "timeZone"],
												"properties": {
													"timeMin": {
														"format": "date-time",
														"type": "string",
														"description": "Start of the time range, as an ISO 8601 date-time."
													},
													"timeMax": {
														"format": "date-time",
														"type": "string",
														"description": "End of the time range, as an ISO 8601 date-time."
													},
													"timeZone": {
														"description": "Date-times of returned events will be expressed in this time-zone",
														"type": "string"
													},
													"includeDeclinedInvites": {
														"description": "Whether to include event invites the user has declined",
														"type": ["boolean", "null"]
													}
												},
												"type": "object",
												"additionalProperties": false
											}
										},
										"required": ["type", "calendar_list_events"],
										"title": "Calendar List Events"
									},
									{
										"type": "object",
										"properties": {
											"type": {
												"type": "string",
												"const": "calendar_suggest_meeting_times",
												"description": "The name of the tool to run."
											},
											"calendar_suggest_meeting_times": {
												"description": "The parameters for the calendar_suggest_meeting_times tool. Rank candidate meeting times for the requested participants and range. Results distinguish hard conflicts, soft conflicts, and unknown availability.",
												"required": [
													"participantEmails",
													"durationMinutes",
													"timeMin",
													"timeMax",
													"timeZone"
												],
												"properties": {
													"participantEmails": {
														"description": "Individual participant or group email addresses to find time with. Resolvable groups are expanded into their members.",
														"minItems": 1,
														"type": "array",
														"items": {
															"type": "string"
														}
													},
													"durationMinutes": {
														"description": "The duration of the meeting in minutes",
														"maximum": 9007199254740991,
														"exclusiveMinimum": 0,
														"type": "integer"
													},
													"timeMin": {
														"format": "date-time",
														"type": "string",
														"description": "Start of the time range to consider, as an ISO 8601 date-time."
													},
													"timeMax": {
														"format": "date-time",
														"type": "string",
														"description": "End of the time range to consider, as an ISO 8601 date-time."
													},
													"maxCount": {
														"description": "Maximum number of suggestions to return (default: 10)",
														"maximum": 50,
														"exclusiveMinimum": 0,
														"type": "integer"
													},
													"timeZone": {
														"description": "Date-times of returned events will be expressed in this time-zone",
														"type": "string"
													},
													"includeParticipantSchedules": {
														"description": "Whether to include participant event schedules in the response",
														"type": "boolean"
													}
												},
												"type": "object",
												"additionalProperties": false
											}
										},
										"required": ["type", "calendar_suggest_meeting_times"],
										"title": "Calendar Suggest Meeting Times"
									},
									{
										"type": "object",
										"properties": {
											"type": {
												"type": "string",
												"const": "calendar_list_coworkers_events",
												"description": "The name of the tool to run."
											},
											"calendar_list_coworkers_events": {
												"description": "The parameters for the calendar_list_coworkers_events tool. List detailed events for coworkers in the same organization within a time range. Use this when event titles or context are needed, not only free/busy availability.",
												"required": [
													"coworkerEmails",
													"timeMin",
													"timeMax",
													"timeZone"
												],
												"properties": {
													"coworkerEmails": {
														"description": "Emails of relevant coworkers",
														"type": "array",
														"items": {
															"type": "string"
														}
													},
													"timeMin": {
														"format": "date-time",
														"type": "string",
														"description": "Start of the time range, as an ISO 8601 date-time."
													},
													"timeMax": {
														"format": "date-time",
														"type": "string",
														"description": "End of the time range, as an ISO 8601 date-time."
													},
													"timeZone": {
														"description": "Date-times of returned events will be expressed in this time-zone",
														"type": "string"
													}
												},
												"type": "object",
												"additionalProperties": false
											}
										},
										"required": ["type", "calendar_list_coworkers_events"],
										"title": "Calendar List Coworkers Events"
									},
									{
										"type": "object",
										"properties": {
											"type": {
												"type": "string",
												"const": "calendar_list_calendar_resources",
												"description": "The name of the tool to run."
											},
											"calendar_list_calendar_resources": {
												"required": ["timeSlots", "minCapacity", "timeZone"],
												"properties": {
													"timeSlots": {
														"description": "Specific time slots to check. Returns available resources for each time slot independently.",
														"minItems": 1,
														"type": "array",
														"items": {
															"required": ["startAt", "endAt"],
															"properties": {
																"startAt": {
																	"format": "date-time",
																	"type": "string",
																	"description": "Start of the time slot to check, as an ISO 8601 date-time."
																},
																"endAt": {
																	"format": "date-time",
																	"type": "string",
																	"description": "End of the time slot to check, as an ISO 8601 date-time."
																}
															},
															"type": "object",
															"additionalProperties": false
														}
													},
													"minCapacity": {
														"description": "Minimum room capacity (number of people). MUST include the meeting organizer/user themselves in the count. For a 1-on-1, pass 2. For a meeting with N invitees besides the user, pass N+1.",
														"maximum": 9007199254740991,
														"exclusiveMinimum": 0,
														"type": "integer"
													},
													"maxCount": {
														"description": "Maximum number of resources to return per time slot (default: 20, max: 40)",
														"maximum": 40,
														"default": 20,
														"exclusiveMinimum": 0,
														"type": "integer"
													},
													"ignoreWorkingLocation": {
														"description": "If true, do not narrow rooms to the user's working-location building for this day. Set this when the user is explicitly asking about rooms in a different office (e.g. for a visiting team).",
														"type": "boolean"
													},
													"timeZone": {
														"description": "Date-times of returned events will be expressed in this time-zone",
														"type": "string"
													},
													"calendar": {
														"description": "Calendar of the event the rooms will be attached to. Rooms are scoped to a single account.",
														"required": ["accountId", "calendarId"],
														"properties": {
															"accountId": {
																"type": "string",
																"description": "Account that owns the target calendar."
															},
															"calendarId": {
																"type": "string",
																"description": "Target calendar identifier within the account."
															}
														},
														"type": "object",
														"additionalProperties": false
													}
												},
												"type": "object",
												"additionalProperties": false,
												"description": "The parameters for the calendar_list_calendar_resources tool. List rooms or other calendar resources available for specific times. Resource discovery is scoped to the connected account of the target calendar and only works with Google Workspace accounts that have admin permissions to view Calendar resources."
											}
										},
										"required": ["type", "calendar_list_calendar_resources"],
										"title": "Calendar List Calendar Resources"
									},
									{
										"type": "object",
										"properties": {
											"type": {
												"type": "string",
												"const": "calendar_list_contacts",
												"description": "The name of the tool to run."
											},
											"calendar_list_contacts": {
												"properties": {
													"queries": {
														"description": "Optional search queries to filter contacts by name or email. Results matching any query are included.",
														"maxItems": 50,
														"type": "array",
														"items": {
															"type": "string"
														}
													}
												},
												"type": "object",
												"additionalProperties": false,
												"description": "The parameters for the calendar_list_contacts tool. Find contacts by name or email across the user's connected Calendar accounts. Use this to resolve attendee identities before another Calendar operation."
											}
										},
										"required": ["type", "calendar_list_contacts"],
										"title": "Calendar List Contacts"
									},
									{
										"type": "object",
										"properties": {
											"type": {
												"type": "string",
												"const": "calendar_list_scheduling_links",
												"description": "The name of the tool to run."
											},
											"calendar_list_scheduling_links": {
												"properties": {
													"type": {
														"description": "Return only scheduling links of this type",
														"enum": ["singleUse", "multiUse", "recurring"],
														"type": "string"
													}
												},
												"type": "object",
												"additionalProperties": false,
												"description": "The parameters for the calendar_list_scheduling_links tool. List active, unexpired scheduling links. Use this to identify a link before updating or disabling it."
											}
										},
										"required": ["type", "calendar_list_scheduling_links"],
										"title": "Calendar List Scheduling Links"
									},
									{
										"type": "object",
										"properties": {
											"type": {
												"type": "string",
												"const": "calendar_create_events",
												"description": "The name of the tool to run."
											},
											"calendar_create_events": {
												"required": ["timeZone", "events"],
												"properties": {
													"timeZone": {
														"description": "Date-times of returned events will be expressed in this time-zone",
														"type": "string"
													},
													"events": {
														"maxItems": 50,
														"type": "array",
														"items": {
															"required": ["summary", "period"],
															"properties": {
																"summary": {
																	"minLength": 1,
																	"type": "string",
																	"description": "Title of the event."
																},
																"description": {
																	"type": "string",
																	"description": "Description of the event."
																},
																"location": {
																	"description": "Physical location where the event takes place, or remote conference link/info.",
																	"type": "string"
																},
																"recurrenceRules": {
																	"description": "Recurrence rules in RRULE format (e.g., ['RRULE:FREQ=WEEKLY;COUNT=10']). Can also include EXDATE for exception dates (e.g., ['RRULE:FREQ=WEEKLY;COUNT=10', 'EXDATE:2026-03-24T13:00:00']).",
																	"type": "array",
																	"items": {
																		"type": "string"
																	}
																},
																"period": {
																	"description": "When the event is happening",
																	"oneOf": [
																		{
																			"description": "A date-only period, denoting an all-day event. Property `type` must be set to the exact string \"DATE\"",
																			"required": ["type", "start", "end"],
																			"properties": {
																				"type": {
																					"const": "DATE",
																					"type": "string",
																					"description": "Whether the event period uses all-day dates or date-times."
																				},
																				"start": {
																					"required": ["date"],
																					"properties": {
																						"date": {
																							"description": "Date in ISO 8601 format (no time)",
																							"format": "date",
																							"type": "string"
																						}
																					},
																					"type": "object",
																					"additionalProperties": false,
																					"description": "Start of the event."
																				},
																				"end": {
																					"required": ["date"],
																					"properties": {
																						"date": {
																							"description": "Date in ISO 8601 format (no time)",
																							"format": "date",
																							"type": "string"
																						}
																					},
																					"type": "object",
																					"additionalProperties": false,
																					"description": "End of the event."
																				}
																			},
																			"type": "object",
																			"additionalProperties": false
																		},
																		{
																			"description": "A date-time period, denoting an time-bound event (can span multiple days). Property `type` must be set to the exact string \"DATE_TIME\"",
																			"required": ["type", "start", "end"],
																			"properties": {
																				"type": {
																					"const": "DATE_TIME",
																					"type": "string",
																					"description": "Whether the event period uses all-day dates or date-times."
																				},
																				"start": {
																					"required": ["dateTime"],
																					"example": {
																						"dateTime": "2025-04-30T12:09:00-05:00",
																						"timeZone": "America/Chicago"
																					},
																					"properties": {
																						"dateTime": {
																							"description": "Date-time in ISO 8601 format, in UTC (ending with Z), or with TZ offset, or without TZ offset if `timeZone` is specified in which case will be interpreted as local time in that timeZone",
																							"type": "string"
																						},
																						"timeZone": {
																							"type": "string",
																							"description": "IANA time zone for the event start date-time."
																						}
																					},
																					"type": "object",
																					"additionalProperties": false,
																					"description": "Start of the event."
																				},
																				"end": {
																					"required": ["dateTime"],
																					"example": {
																						"dateTime": "2025-04-30T12:09:00-05:00",
																						"timeZone": "America/Chicago"
																					},
																					"properties": {
																						"dateTime": {
																							"description": "Date-time in ISO 8601 format, in UTC (ending with Z), or with TZ offset, or without TZ offset if `timeZone` is specified in which case will be interpreted as local time in that timeZone",
																							"type": "string"
																						},
																						"timeZone": {
																							"type": "string",
																							"description": "IANA time zone for the event end date-time."
																						}
																					},
																					"type": "object",
																					"additionalProperties": false,
																					"description": "End of the event."
																				}
																			},
																			"type": "object",
																			"additionalProperties": false
																		}
																	],
																	"type": "object"
																},
																"attendees": {
																	"description": "Attendees to invite to the event",
																	"type": "array",
																	"items": {
																		"required": ["email"],
																		"properties": {
																			"email": {
																				"type": "string",
																				"description": "Email address of the attendee."
																			},
																			"displayName": {
																				"description": "Totally optional, provide only if you are sure of the attendee's name",
																				"type": "string"
																			},
																			"isOptional": {
																				"description": "Set only if the user was explicit about an attendee not being required",
																				"type": "boolean"
																			}
																		},
																		"type": "object",
																		"additionalProperties": false
																	}
																},
																"resources": {
																	"description": "Resources (such as rooms) to invite to the event. Must be from the same account as `event.calendar`.",
																	"type": "array",
																	"items": {
																		"required": ["isOptional"],
																		"properties": {
																			"email": {
																				"type": "string",
																				"description": "Email address of the resource."
																			},
																			"displayName": {
																				"type": "string",
																				"description": "Display name of the resource."
																			},
																			"isOptional": {
																				"description": "Set only if the user was explicit about a resource not being required",
																				"type": "boolean"
																			}
																		},
																		"type": "object",
																		"additionalProperties": false
																	}
																},
																"calendar": {
																	"description": "Will create the event on the primary, default calendar if not specified.",
																	"required": ["accountId", "calendarId"],
																	"properties": {
																		"accountId": {
																			"type": "string",
																			"description": "Account that owns the target calendar."
																		},
																		"calendarId": {
																			"type": "string",
																			"description": "Target calendar identifier within the account."
																		}
																	},
																	"type": "object",
																	"additionalProperties": false
																},
																"disableConferencing": {
																	"description": "Whether to disable conferencing for this event.",
																	"type": "boolean"
																}
															},
															"type": "object",
															"additionalProperties": false
														},
														"description": "Events to create."
													}
												},
												"type": "object",
												"additionalProperties": false,
												"description": "The parameters for the calendar_create_events tool. Create one or more events on writable calendars. Use this after the date, time, attendees, and target calendar are known. Creating events may notify attendees."
											}
										},
										"required": ["type", "calendar_create_events"],
										"title": "Calendar Create Events"
									},
									{
										"type": "object",
										"properties": {
											"type": {
												"type": "string",
												"const": "calendar_update_events",
												"description": "The name of the tool to run."
											},
											"calendar_update_events": {
												"required": ["timeZone", "updates"],
												"properties": {
													"timeZone": {
														"description": "Date-times of returned events will be expressed in this time-zone",
														"type": "string"
													},
													"updates": {
														"maxItems": 50,
														"type": "array",
														"items": {
															"oneOf": [
																{
																	"required": ["updateType", "event", "rsvp"],
																	"properties": {
																		"updateType": {
																			"description": "Must be set to the exact string \"RSVP\" in upper case.",
																			"const": "RSVP",
																			"type": "string"
																		},
																		"event": {
																			"required": ["calendar", "eventId"],
																			"properties": {
																				"calendar": {
																					"required": [
																						"accountId",
																						"calendarId"
																					],
																					"properties": {
																						"accountId": {
																							"type": "string",
																							"description": "Account that owns the event calendar."
																						},
																						"calendarId": {
																							"type": "string",
																							"description": "Event calendar identifier within the account."
																						}
																					},
																					"type": "object",
																					"additionalProperties": false,
																					"description": "Calendar containing the event."
																				},
																				"eventId": {
																					"type": "string",
																					"description": "Identifier of the event to update."
																				},
																				"eventSummary": {
																					"description": "Optional summary of the event, used by agent UI.",
																					"type": "string"
																				}
																			},
																			"type": "object",
																			"additionalProperties": false,
																			"description": "Event to update."
																		},
																		"rsvp": {
																			"required": ["responseStatus"],
																			"properties": {
																				"responseStatus": {
																					"description": "The calendar user's RSVP status",
																					"enum": [
																						"needsAction",
																						"accepted",
																						"declined",
																						"tentative"
																					],
																					"type": "string"
																				},
																				"comment": {
																					"type": "string",
																					"description": "Optional comment accompanying the RSVP."
																				}
																			},
																			"type": "object",
																			"additionalProperties": false,
																			"description": "RSVP update to apply to the event."
																		}
																	},
																	"type": "object",
																	"additionalProperties": false
																},
																{
																	"required": ["updateType", "event", "update"],
																	"properties": {
																		"updateType": {
																			"description": "Must be set to the exact string \"UPDATE\" in upper case.",
																			"const": "UPDATE",
																			"type": "string"
																		},
																		"event": {
																			"required": ["calendar", "eventId"],
																			"properties": {
																				"calendar": {
																					"required": [
																						"accountId",
																						"calendarId"
																					],
																					"properties": {
																						"accountId": {
																							"type": "string",
																							"description": "Account that owns the event calendar."
																						},
																						"calendarId": {
																							"type": "string",
																							"description": "Event calendar identifier within the account."
																						}
																					},
																					"type": "object",
																					"additionalProperties": false,
																					"description": "Calendar containing the event."
																				},
																				"eventId": {
																					"type": "string",
																					"description": "Identifier of the event to update."
																				},
																				"eventSummary": {
																					"description": "Optional summary of the event, used by agent UI.",
																					"type": "string"
																				}
																			},
																			"type": "object",
																			"additionalProperties": false,
																			"description": "Event to update."
																		},
																		"update": {
																			"properties": {
																				"summary": {
																					"minLength": 1,
																					"type": "string",
																					"description": "Updated title of the event."
																				},
																				"description": {
																					"type": "string",
																					"description": "Updated description of the event."
																				},
																				"location": {
																					"description": "Physical location where the event takes place, or remote conference link/info.",
																					"type": "string"
																				},
																				"recurrenceRules": {
																					"description": "Recurrence rules in RRULE format (e.g., ['RRULE:FREQ=WEEKLY;COUNT=10']). Can also include EXDATE for exception dates (e.g., ['RRULE:FREQ=WEEKLY;COUNT=10', 'EXDATE:2026-03-24T13:00:00']).",
																					"type": "array",
																					"items": {
																						"type": "string"
																					}
																				},
																				"period": {
																					"description": "When the event is happening",
																					"oneOf": [
																						{
																							"description": "A date-only period, denoting an all-day event. Property `type` must be set to the exact string \"DATE\"",
																							"required": [
																								"type",
																								"start",
																								"end"
																							],
																							"properties": {
																								"type": {
																									"const": "DATE",
																									"type": "string",
																									"description": "Whether the updated event period uses all-day dates or date-times."
																								},
																								"start": {
																									"required": ["date"],
																									"properties": {
																										"date": {
																											"description": "Date in ISO 8601 format (no time)",
																											"format": "date",
																											"type": "string"
																										}
																									},
																									"type": "object",
																									"additionalProperties": false,
																									"description": "Updated start of the event."
																								},
																								"end": {
																									"required": ["date"],
																									"properties": {
																										"date": {
																											"description": "Date in ISO 8601 format (no time)",
																											"format": "date",
																											"type": "string"
																										}
																									},
																									"type": "object",
																									"additionalProperties": false,
																									"description": "Updated end of the event."
																								}
																							},
																							"type": "object",
																							"additionalProperties": false
																						},
																						{
																							"description": "A date-time period, denoting an time-bound event (can span multiple days). Property `type` must be set to the exact string \"DATE_TIME\"",
																							"required": [
																								"type",
																								"start",
																								"end"
																							],
																							"properties": {
																								"type": {
																									"const": "DATE_TIME",
																									"type": "string",
																									"description": "Whether the updated event period uses all-day dates or date-times."
																								},
																								"start": {
																									"required": ["dateTime"],
																									"example": {
																										"dateTime": "2025-04-30T12:09:00-05:00",
																										"timeZone": "America/Chicago"
																									},
																									"properties": {
																										"dateTime": {
																											"description": "Date-time in ISO 8601 format, in UTC (ending with Z), or with TZ offset, or without TZ offset if `timeZone` is specified in which case will be interpreted as local time in that timeZone",
																											"type": "string"
																										},
																										"timeZone": {
																											"type": "string",
																											"description": "IANA time zone for the updated event start date-time."
																										}
																									},
																									"type": "object",
																									"additionalProperties": false,
																									"description": "Updated start of the event."
																								},
																								"end": {
																									"required": ["dateTime"],
																									"example": {
																										"dateTime": "2025-04-30T12:09:00-05:00",
																										"timeZone": "America/Chicago"
																									},
																									"properties": {
																										"dateTime": {
																											"description": "Date-time in ISO 8601 format, in UTC (ending with Z), or with TZ offset, or without TZ offset if `timeZone` is specified in which case will be interpreted as local time in that timeZone",
																											"type": "string"
																										},
																										"timeZone": {
																											"type": "string",
																											"description": "IANA time zone for the updated event end date-time."
																										}
																									},
																									"type": "object",
																									"additionalProperties": false,
																									"description": "Updated end of the event."
																								}
																							},
																							"type": "object",
																							"additionalProperties": false
																						}
																					],
																					"type": "object"
																				},
																				"attendees": {
																					"description": "Updated list of attendees for the event",
																					"type": "array",
																					"items": {
																						"required": ["email"],
																						"properties": {
																							"email": {
																								"type": "string",
																								"description": "Email address of the attendee."
																							},
																							"displayName": {
																								"description": "Totally optional, provide only if you are sure of the attendee's name",
																								"type": "string"
																							},
																							"isOptional": {
																								"description": "Set only if the user was explicit about an attendee not being required",
																								"type": "boolean"
																							}
																						},
																						"type": "object",
																						"additionalProperties": false
																					}
																				},
																				"resources": {
																					"description": "Updated list of resources (such as rooms) for the event. Must be from the same account as `event.calendar`.",
																					"type": "array",
																					"items": {
																						"required": ["isOptional"],
																						"properties": {
																							"email": {
																								"type": "string",
																								"description": "Email address of the resource."
																							},
																							"displayName": {
																								"type": "string",
																								"description": "Display name of the resource."
																							},
																							"isOptional": {
																								"description": "Set only if the user was explicit about a resource not being required",
																								"type": "boolean"
																							}
																						},
																						"type": "object",
																						"additionalProperties": false
																					}
																				},
																				"addConferencing": {
																					"description": "Whether to add conferencing to this event. Only adds conferencing if the event has attendees and doesn't already have conferencing.",
																					"type": "boolean"
																				}
																			},
																			"type": "object",
																			"additionalProperties": false,
																			"description": "Changes to apply to the event."
																		}
																	},
																	"type": "object",
																	"additionalProperties": false
																}
															],
															"type": "object"
														},
														"description": "Event updates to apply."
													}
												},
												"type": "object",
												"additionalProperties": false,
												"description": "The parameters for the calendar_update_events tool. Update one or more identified events, including timing, attendees, recurrence, resources, or RSVP status. Updates require permission and may notify attendees."
											}
										},
										"required": ["type", "calendar_update_events"],
										"title": "Calendar Update Events"
									},
									{
										"type": "object",
										"properties": {
											"type": {
												"type": "string",
												"const": "calendar_cancel_events",
												"description": "The name of the tool to run."
											},
											"calendar_cancel_events": {
												"required": ["events"],
												"properties": {
													"events": {
														"maxItems": 50,
														"type": "array",
														"items": {
															"required": ["calendar", "eventId"],
															"properties": {
																"calendar": {
																	"required": ["accountId", "calendarId"],
																	"properties": {
																		"accountId": {
																			"type": "string",
																			"description": "Account that owns the event calendar."
																		},
																		"calendarId": {
																			"type": "string",
																			"description": "Event calendar identifier within the account."
																		}
																	},
																	"type": "object",
																	"additionalProperties": false,
																	"description": "Calendar containing the event."
																},
																"eventId": {
																	"type": "string",
																	"description": "Identifier of the event to cancel."
																},
																"eventSummary": {
																	"description": "Optional summary of the event, used by agent UI.",
																	"type": "string"
																}
															},
															"type": "object",
															"additionalProperties": false
														},
														"description": "Events to cancel."
													}
												},
												"type": "object",
												"additionalProperties": false,
												"description": "The parameters for the calendar_cancel_events tool. Cancel one or more identified events the user can manage. Cancellation may notify attendees. For an event the user does not organize, use calendar_update_events with updateType: \"RSVP\" instead."
											}
										},
										"required": ["type", "calendar_cancel_events"],
										"title": "Calendar Cancel Events"
									},
									{
										"type": "object",
										"properties": {
											"type": {
												"type": "string",
												"const": "calendar_create_scheduling_link",
												"description": "The name of the tool to run."
											},
											"calendar_create_scheduling_link": {
												"required": [
													"bookingCalendar",
													"duration",
													"timeRanges"
												],
												"properties": {
													"bookingCalendar": {
														"description": "Calendar where meetings booked through this scheduling link will be created",
														"required": ["accountId", "calendarId"],
														"properties": {
															"accountId": {
																"type": "string",
																"description": "Account that owns the booking calendar."
															},
															"calendarId": {
																"type": "string",
																"description": "Booking calendar identifier within the account."
															}
														},
														"type": "object",
														"additionalProperties": false
													},
													"conflictCalendars": {
														"description": "Calendars to check for conflicts when determining available time slots. Events on these calendars will block booking availability.",
														"type": "array",
														"items": {
															"required": ["accountId", "calendarId"],
															"properties": {
																"accountId": {
																	"type": "string",
																	"description": "Account that owns the conflict calendar."
																},
																"calendarId": {
																	"type": "string",
																	"description": "Conflict calendar identifier within the account."
																}
															},
															"type": "object",
															"additionalProperties": false
														}
													},
													"title": {
														"description": "Title of the scheduling link, shown on the booking page",
														"type": "string"
													},
													"description": {
														"description": "Description shown to invitees on the booking page",
														"type": "string"
													},
													"duration": {
														"description": "Meeting duration in minutes",
														"minimum": 5,
														"maximum": 9007199254740991,
														"type": "integer"
													},
													"timeRanges": {
														"description": "Time windows when the user is available for bookings",
														"minItems": 1,
														"type": "array",
														"items": {
															"required": ["startDate", "endDate"],
															"properties": {
																"startDate": {
																	"description": "Start of availability window in ISO 8601 format with timezone offset, e.g. '2024-08-22T09:00:00-04:00'",
																	"type": "string"
																},
																"endDate": {
																	"description": "End of availability window in ISO 8601 format with timezone offset, e.g. '2024-08-22T17:00:00-04:00'",
																	"type": "string"
																},
																"recurrence": {
																	"description": "Recurrence rules in RRULE format (e.g., ['RRULE:FREQ=WEEKLY;COUNT=10']). Can also include EXDATE for exception dates (e.g., ['RRULE:FREQ=WEEKLY;COUNT=10', 'EXDATE:2026-03-24T13:00:00']).",
																	"type": "array",
																	"items": {
																		"type": "string"
																	}
																}
															},
															"type": "object",
															"additionalProperties": false
														}
													},
													"type": {
														"description": "Type of scheduling link: 'singleUse' (one booking only), 'multiUse' (multiple bookings), 'recurring' (repeating weekly availability). Inferred from timeRanges if not provided.",
														"enum": ["singleUse", "multiUse", "recurring"],
														"type": "string"
													},
													"alias": {
														"description": "Custom URL slug for the scheduling link (letters, numbers, hyphens, underscores only). Must be between 1 and 32 characters. Auto-generated if not provided.",
														"minLength": 1,
														"maxLength": 32,
														"type": "string"
													},
													"useDefaultConferencing": {
														"description": "If true (default), uses the user's default video conferencing provider",
														"type": "boolean"
													},
													"minLeadTime": {
														"description": "Minimum notice period in minutes before a meeting can be booked",
														"minimum": 0,
														"maximum": 9007199254740991,
														"type": "integer"
													},
													"maxLeadTime": {
														"description": "Maximum advance booking window in minutes (how far into the future meetings can be booked)",
														"maximum": 9007199254740991,
														"exclusiveMinimum": 0,
														"type": "integer"
													},
													"expirationDate": {
														"description": "ISO 8601 date-time when this scheduling link expires and can no longer accept bookings",
														"type": "string"
													}
												},
												"type": "object",
												"additionalProperties": false,
												"description": "The parameters for the calendar_create_scheduling_link tool. Create a self-booking page with a booking calendar, conflict calendars, duration, availability, and link type. Use this only when other people should choose a time themselves."
											}
										},
										"required": ["type", "calendar_create_scheduling_link"],
										"title": "Calendar Create Scheduling Link"
									},
									{
										"type": "object",
										"properties": {
											"type": {
												"type": "string",
												"const": "calendar_update_scheduling_link",
												"description": "The name of the tool to run."
											},
											"calendar_update_scheduling_link": {
												"required": ["identity"],
												"properties": {
													"identity": {
														"description": "Identity of the scheduling link to update. These fields are used only to select and guard the existing link.",
														"required": [
															"schedulingLinkId",
															"bookingCalendarRef"
														],
														"properties": {
															"schedulingLinkId": {
																"description": "ID of the scheduling link to update",
																"type": "string"
															},
															"bookingCalendarRef": {
																"description": "Current booking calendar for this scheduling link. Used to verify that the agent is updating the intended link.",
																"required": ["accountId", "calendarId"],
																"properties": {
																	"accountId": {
																		"type": "string",
																		"description": "Account that owns the current booking calendar."
																	},
																	"calendarId": {
																		"type": "string",
																		"description": "Current booking calendar identifier within the account."
																	}
																},
																"type": "object",
																"additionalProperties": false
															}
														},
														"type": "object",
														"additionalProperties": false
													},
													"patch": {
														"description": "Patch of changes to apply to the scheduling link. Omitted fields are left unchanged, and nullable fields can be cleared with null.",
														"default": {},
														"properties": {
															"bookingCalendar": {
																"description": "Replace the calendar where meetings booked through this scheduling link are created",
																"required": ["accountId", "calendarId"],
																"properties": {
																	"accountId": {
																		"type": "string",
																		"description": "Account that owns the replacement booking calendar."
																	},
																	"calendarId": {
																		"type": "string",
																		"description": "Replacement booking calendar identifier within the account."
																	}
																},
																"type": "object",
																"additionalProperties": false
															},
															"conflictCalendars": {
																"description": "Replace the calendars checked for conflicts when determining availability",
																"type": "array",
																"items": {
																	"required": ["accountId", "calendarId"],
																	"properties": {
																		"accountId": {
																			"type": "string",
																			"description": "Account that owns the replacement conflict calendar."
																		},
																		"calendarId": {
																			"type": "string",
																			"description": "Replacement conflict calendar identifier within the account."
																		}
																	},
																	"type": "object",
																	"additionalProperties": false
																}
															},
															"title": {
																"description": "Update the scheduling link title. Use null to clear it.",
																"type": ["string", "null"]
															},
															"description": {
																"description": "Update the scheduling link description. Use null to clear it.",
																"type": ["string", "null"]
															},
															"duration": {
																"description": "Update the meeting duration in minutes",
																"minimum": 5,
																"maximum": 9007199254740991,
																"type": "integer"
															},
															"timeRanges": {
																"description": "Replace the scheduling link availability windows",
																"minItems": 1,
																"type": "array",
																"items": {
																	"required": ["startDate", "endDate"],
																	"properties": {
																		"startDate": {
																			"description": "Start of availability window in ISO 8601 format with timezone offset, e.g. '2024-08-22T09:00:00-04:00'",
																			"type": "string"
																		},
																		"endDate": {
																			"description": "End of availability window in ISO 8601 format with timezone offset, e.g. '2024-08-22T17:00:00-04:00'",
																			"type": "string"
																		},
																		"recurrence": {
																			"description": "Recurrence rules in RRULE format (e.g., ['RRULE:FREQ=WEEKLY;COUNT=10']). Can also include EXDATE for exception dates (e.g., ['RRULE:FREQ=WEEKLY;COUNT=10', 'EXDATE:2026-03-24T13:00:00']).",
																			"type": "array",
																			"items": {
																				"type": "string"
																			}
																		}
																	},
																	"type": "object",
																	"additionalProperties": false
																}
															},
															"type": {
																"description": "Update the scheduling link type. If omitted while timeRanges are updated, the type is inferred from the new timeRanges.",
																"enum": ["singleUse", "multiUse", "recurring"],
																"type": "string"
															},
															"alias": {
																"description": "Update the custom URL slug for the scheduling link. Must be between 1 and 32 characters.",
																"minLength": 1,
																"maxLength": 32,
																"type": "string"
															},
															"useDefaultConferencing": {
																"description": "If true, apply the default conferencing for the effective booking calendar account. If false, clear conferencing.",
																"type": "boolean"
															},
															"minLeadTime": {
																"description": "Update the minimum lead time in minutes. Must be 0 or greater and less than maxLeadTime when both are set. Use null to clear it.",
																"anyOf": [
																	{
																		"minimum": 0,
																		"maximum": 9007199254740991,
																		"type": "integer"
																	},
																	{
																		"type": "null"
																	}
																]
															},
															"maxLeadTime": {
																"description": "Update the maximum lead time in minutes. Must be greater than 0 and greater than minLeadTime when both are set. Use null to clear it.",
																"anyOf": [
																	{
																		"maximum": 9007199254740991,
																		"exclusiveMinimum": 0,
																		"type": "integer"
																	},
																	{
																		"type": "null"
																	}
																]
															},
															"expirationDate": {
																"description": "Update the expiration date for the scheduling link. Must be in the future when provided. Use null to clear it.",
																"type": ["string", "null"]
															}
														},
														"type": "object",
														"additionalProperties": false
													}
												},
												"type": "object",
												"additionalProperties": false,
												"description": "The parameters for the calendar_update_scheduling_link tool. Update one identified scheduling link. Send only the fields that should change; omitted fields remain unchanged."
											}
										},
										"required": ["type", "calendar_update_scheduling_link"],
										"title": "Calendar Update Scheduling Link"
									},
									{
										"type": "object",
										"properties": {
											"type": {
												"type": "string",
												"const": "calendar_delete_scheduling_links",
												"description": "The name of the tool to run."
											},
											"calendar_delete_scheduling_links": {
												"required": ["schedulingLinks"],
												"properties": {
													"schedulingLinks": {
														"description": "Scheduling links to delete",
														"minItems": 1,
														"maxItems": 50,
														"type": "array",
														"items": {
															"required": [
																"schedulingLinkId",
																"bookingCalendarRef"
															],
															"properties": {
																"schedulingLinkId": {
																	"description": "ID of the scheduling link to delete",
																	"type": "string"
																},
																"bookingCalendarRef": {
																	"description": "Current booking calendar for this scheduling link. Used to verify the link's existing calendar before deleting it.",
																	"required": ["accountId", "calendarId"],
																	"properties": {
																		"accountId": {
																			"type": "string",
																			"description": "Account that owns the current booking calendar."
																		},
																		"calendarId": {
																			"type": "string",
																			"description": "Current booking calendar identifier within the account."
																		}
																	},
																	"type": "object",
																	"additionalProperties": false
																}
															},
															"type": "object",
															"additionalProperties": false
														}
													}
												},
												"type": "object",
												"additionalProperties": false,
												"description": "The parameters for the calendar_delete_scheduling_links tool. Disable one or more identified scheduling links. Existing meetings booked through a disabled link remain on the calendar."
											}
										},
										"required": ["type", "calendar_delete_scheduling_links"],
										"title": "Calendar Delete Scheduling Links"
									},
									{
										"type": "object",
										"properties": {
											"type": {
												"type": "string",
												"const": "get_form",
												"description": "The name of the tool to run."
											},
											"get_form": {
												"type": "object",
												"properties": {
													"url": {
														"type": "string",
														"description": "The Notion form or form-view URL to retrieve."
													}
												},
												"additionalProperties": false,
												"required": ["url"],
												"description": "The parameters for the get_form tool. Read a Notion Form's complete definition. Follow tool-docs://notion/databases/forms.md.\n\nIf availability is not already known for this connection, call get_tool_access with {} before using this tool. Reuse the returned access map across tools; check the status and restricted_parameters."
											}
										},
										"required": ["type", "get_form"],
										"title": "Get Form"
									},
									{
										"type": "object",
										"properties": {
											"type": {
												"type": "string",
												"const": "get_self",
												"description": "The name of the tool to run."
											},
											"get_self": {
												"$ref": "#/components/schemas/emptyObject",
												"description": "The parameters for the get_self tool. Get the current Notion connection's workspace and authenticated user. Call with {}. Returns the workspace ID and name, and the user's ID, name, type, and email when available. Use this tool to identify the connected account. To check tool availability, use get_tool_access."
											}
										},
										"required": ["type", "get_self"],
										"title": "Get Self"
									},
									{
										"type": "object",
										"properties": {
											"type": {
												"type": "string",
												"const": "finish_revision",
												"description": "The name of the tool to run."
											},
											"finish_revision": {
												"type": "object",
												"properties": {
													"title": {
														"type": "string",
														"minLength": 1,
														"maxLength": 200,
														"description": "Short, general title for the whole set of changes. Visible to every workspace member, so leave out page titles and page details."
													},
													"description": {
														"type": "string",
														"maxLength": 2000,
														"description": "What kind of changes the Revision makes and why, without page titles or page details. Visible to every workspace member."
													}
												},
												"additionalProperties": false,
												"description": "The parameters for the finish_revision tool. Finish the current revision. Any subsequent page edits will be tracked in a new revision. Call this tool whenever the user asks you to finish a revision, create a new revision or after completing page edits requested by the user. Pass a short title and description that summarize the changes."
											}
										},
										"required": ["type", "finish_revision"],
										"title": "Finish Revision"
									},
									{
										"type": "object",
										"properties": {
											"type": {
												"type": "string",
												"const": "link_meeting_note_to_calendar_event",
												"description": "The name of the tool to run."
											},
											"link_meeting_note_to_calendar_event": {
												"type": "object",
												"additionalProperties": false,
												"required": ["meetingNote", "calendarEvent"],
												"properties": {
													"meetingNote": {
														"type": "string",
														"description": "URL of the existing full-page meeting note to link."
													},
													"calendarEvent": {
														"type": "object",
														"additionalProperties": false,
														"required": ["calendar", "eventId"],
														"description": "The calendar event to link the meeting note to. Copy calendar and eventId from the event returned by calendar tools.",
														"properties": {
															"calendar": {
																"type": "object",
																"additionalProperties": false,
																"required": ["accountId", "calendarId"],
																"description": "The calendar the event belongs to.",
																"properties": {
																	"accountId": {
																		"type": "string",
																		"description": "ID of the calendar account."
																	},
																	"calendarId": {
																		"type": "string",
																		"description": "ID of the calendar."
																	}
																}
															},
															"eventId": {
																"type": "string",
																"description": "ID of the event."
															}
														}
													}
												},
												"description": "The parameters for the link_meeting_note_to_calendar_event tool. Link an existing full-page meeting note to a calendar event. First find the event with the calendar tools. A meeting note embedded in a page appears as a <meeting-notes> tag: pass the URL from that tag, not the URL of the page around it. If the result lists otherMeetingNoteUrls, tell the user the event already has those meeting notes and link them. To create a new meeting note for an event, use create_meeting_note."
											}
										},
										"required": ["type", "link_meeting_note_to_calendar_event"],
										"title": "Link Meeting Note To Calendar Event"
									},
									{
										"type": "object",
										"properties": {
											"type": {
												"type": "string",
												"const": "convert_to_meetings_database",
												"description": "The name of the tool to run."
											},
											"convert_to_meetings_database": {
												"type": "object",
												"properties": {
													"databaseUrl": {
														"type": "string",
														"minLength": 1,
														"description": "URL of the database to convert, or of its data source or one of its views."
													},
													"dateProperty": {
														"type": "string",
														"minLength": 1,
														"description": "Name of an existing date property to use as the meeting date."
													},
													"attendeesProperty": {
														"type": "string",
														"minLength": 1,
														"description": "Name of an existing person property to use as the meeting attendees."
													}
												},
												"additionalProperties": false,
												"required": ["databaseUrl"],
												"description": "The parameters for the convert_to_meetings_database tool. Turn an existing regular database into a Meetings database, so its rows can be meeting notes. Existing rows are kept as they are. Only pass dateProperty or attendeesProperty when the user chose an existing property; otherwise a single matching property is reused and a missing one is created."
											}
										},
										"required": ["type", "convert_to_meetings_database"],
										"title": "Convert To Meetings Database"
									},
									{
										"type": "object",
										"properties": {
											"type": {
												"type": "string",
												"const": "create_meeting_note",
												"description": "The name of the tool to run."
											},
											"create_meeting_note": {
												"type": "object",
												"additionalProperties": false,
												"properties": {
													"parent": {
														"description": "Where to file the meeting note. Pass only when the user names a destination; omit it to use the user's default meeting notes database. Pass a page to append the meeting note to the page content.",
														"oneOf": [
															{
																"type": "object",
																"additionalProperties": false,
																"required": ["type", "url"],
																"properties": {
																	"type": {
																		"type": "string",
																		"const": "user",
																		"description": "Parent type."
																	},
																	"url": {
																		"type": "string",
																		"description": "URL of the user."
																	}
																}
															},
															{
																"type": "object",
																"additionalProperties": false,
																"required": ["type", "url"],
																"properties": {
																	"type": {
																		"type": "string",
																		"const": "page",
																		"description": "Parent type."
																	},
																	"url": {
																		"type": "string",
																		"description": "URL of the page."
																	}
																}
															},
															{
																"type": "object",
																"additionalProperties": false,
																"required": ["type", "url"],
																"properties": {
																	"type": {
																		"type": "string",
																		"const": "dataSource",
																		"description": "Parent type."
																	},
																	"url": {
																		"type": "string",
																		"description": "URL of the data source."
																	}
																}
															},
															{
																"type": "object",
																"additionalProperties": false,
																"required": ["type", "url"],
																"properties": {
																	"type": {
																		"type": "string",
																		"const": "teamspace",
																		"description": "Parent type."
																	},
																	"url": {
																		"type": "string",
																		"description": "URL of the teamspace."
																	}
																}
															}
														]
													},
													"title": {
														"type": "string",
														"description": "Meeting note title."
													},
													"content": {
														"type": "string",
														"description": "The meeting note's Notes, in Notion Markdown (tool-docs://notion/notion-markdown.md). Do not wrap them in <meeting-notes> tags."
													},
													"calendarEvent": {
														"type": "object",
														"additionalProperties": false,
														"required": ["calendar", "eventId"],
														"description": "The calendar event to link the meeting note to. Copy calendar and eventId from the event returned by calendar tools.",
														"properties": {
															"calendar": {
																"type": "object",
																"additionalProperties": false,
																"required": ["accountId", "calendarId"],
																"description": "The calendar the event belongs to.",
																"properties": {
																	"accountId": {
																		"type": "string",
																		"description": "ID of the calendar account."
																	},
																	"calendarId": {
																		"type": "string",
																		"description": "ID of the calendar."
																	}
																}
															},
															"eventId": {
																"type": "string",
																"description": "ID of the event."
															}
														}
													}
												},
												"description": "The parameters for the create_meeting_note tool. Create a Notion meeting note. Use this instead of create_pages whenever the user asks for a meeting note. content is written to the meeting note's Notes tab. Omit parent to file the note where the user's meeting notes go by default; pass parent only when the user names a destination. If parent is a regular database, not a Meetings database, first ask the user whether to convert it with convert_to_meetings_database. If the request refers to a scheduled meeting, first find it with the calendar tools and pass calendarEvent, without parent, title or content; if none matches, create the note without it. With calendarEvent, returns the event's meeting note (status \"existing\") or creates one filed and titled like the event's other notes; add content to it afterwards. Without calendarEvent, creates a new meeting note on every call."
											}
										},
										"required": ["type", "create_meeting_note"],
										"title": "Create Meeting Note"
									}
								]
							}
						}
					}
				},
				"responses": {
					"200": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/runToolResponse"
								}
							}
						}
					},
					"202": {
						"description": "Accepted when `allow_async` is true and the tool call has been queued for background execution.",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"required": [
										"object",
										"id",
										"status",
										"status_url",
										"created_time",
										"operation",
										"poll_after_seconds"
									],
									"additionalProperties": false,
									"properties": {
										"object": {
											"type": "string",
											"const": "async_task"
										},
										"id": {
											"type": "string",
											"minLength": 1
										},
										"status_url": {
											"type": "string",
											"minLength": 1
										},
										"created_time": {
											"type": "string",
											"format": "date-time"
										},
										"operation": {
											"type": "object",
											"required": ["surface", "name"],
											"additionalProperties": false,
											"properties": {
												"surface": {
													"type": "string",
													"enum": ["rest", "mcp"]
												},
												"name": {
													"type": "string",
													"minLength": 1
												}
											}
										},
										"status": {
											"type": "string",
											"enum": ["queued", "running", "retrying"]
										},
										"poll_after_seconds": {
											"type": "integer",
											"minimum": 0
										}
									}
								}
							}
						}
					},
					"400": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_400"
								}
							}
						}
					},
					"401": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_401"
								}
							}
						}
					},
					"403": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_403"
								}
							}
						}
					},
					"404": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_404"
								}
							}
						}
					},
					"406": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_406"
								}
							}
						}
					},
					"409": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_409"
								}
							}
						}
					},
					"429": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_429"
								}
							}
						}
					},
					"500": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_500"
								}
							}
						}
					},
					"503": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_503"
								}
							}
						}
					},
					"504": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_504"
								}
							}
						}
					},
					"529": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_529"
								}
							}
						}
					}
				}
			}
		},
		"/v1/tools/auth": {
			"get": {
				"summary": "Authorize an AI tools session",
				"operationId": "authorize-tools-session",
				"tags": ["Internal"],
				"x-hidden": true,
				"x-noIndex": true,
				"parameters": [
					{
						"$ref": "#/components/parameters/notionVersion"
					}
				],
				"responses": {
					"200": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"space_id": {
											"type": "string",
											"description": "The workspace ID for this tools session."
										},
										"tool_names": {
											"type": "array",
											"items": {
												"type": "string"
											},
											"maxItems": 100,
											"description": "The MCP tools that may be registered for this authenticated session."
										},
										"mcp_memories_enabled": {
											"type": "boolean",
											"description": "Whether personal memory tools should be registered for this authenticated session."
										},
										"mcp_memories_disabled_by": {
											"type": "string",
											"enum": ["workspace", "user"],
											"description": "Present when MCP memories are rolled out to the workspace but a setting turned them off: workspace or user. Hosted MCP tells the model why memory tools are missing."
										},
										"chatgpt_plugin_tools_enabled": {
											"type": "boolean",
											"description": "Whether hosted MCP registers the ChatGPT page editor tools for this authenticated session. False when a workspace admin turned off opening Notion pages inside MCP clients."
										}
									},
									"additionalProperties": false,
									"required": ["space_id"]
								}
							}
						}
					},
					"400": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_400"
								}
							}
						}
					},
					"401": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_401"
								}
							}
						}
					},
					"403": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_403"
								}
							}
						}
					},
					"404": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_404"
								}
							}
						}
					},
					"406": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_406"
								}
							}
						}
					},
					"409": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_409"
								}
							}
						}
					},
					"429": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_429"
								}
							}
						}
					},
					"500": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_500"
								}
							}
						}
					},
					"503": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_503"
								}
							}
						}
					},
					"504": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_504"
								}
							}
						}
					},
					"529": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_529"
								}
							}
						}
					}
				}
			}
		},
		"/v1/tools/{tool_id}": {
			"post": {
				"summary": "Run a tool by id",
				"operationId": "run-tool-by-id",
				"tags": ["Internal"],
				"x-hidden": true,
				"x-noIndex": true,
				"parameters": [
					{
						"name": "tool_id",
						"in": "path",
						"required": true,
						"schema": {
							"title": "Tool id",
							"type": "string",
							"enum": [
								"search",
								"ai_search",
								"memory_search",
								"get_tool_access",
								"fetch",
								"create_attachment",
								"download_attachment",
								"get_file_download_urls",
								"create_pages",
								"update_page",
								"delete_pages",
								"delete_databases",
								"restore_pages",
								"convert_page_to_skill",
								"upload_skill",
								"download_skill",
								"get_enabled_skills",
								"update_skill_settings",
								"update_enabled_skills",
								"move_pages",
								"duplicate_page",
								"create_database",
								"create_folder",
								"update_folder",
								"update_data_source",
								"create_comment",
								"get_comments",
								"update_comment",
								"delete_comment",
								"set_discussion_resolved",
								"set_comment_reaction",
								"get_formula_value",
								"get_rollup_value",
								"get_notifications",
								"update_notifications",
								"get_async_task",
								"get_users",
								"reply_to_slack_thread",
								"query_data_sources",
								"query_multiple_data_sources",
								"query_meeting_notes",
								"list_agents",
								"search_agents",
								"search_sessions",
								"query_sessions",
								"spawn_session",
								"get_session_status",
								"wait_session",
								"stop_session",
								"send_message_to_session",
								"list_session_events",
								"read_session_event",
								"create_view",
								"update_view",
								"xldb_update_column_title",
								"xldb_remove_column",
								"xldb_remove_view_column",
								"xldb_remove_view_join",
								"xldb_add_view_join",
								"xldb_update_view_join",
								"xldb_add_view_column",
								"xldb_add_column",
								"xldb_optimize_column",
								"xldb_unoptimize_column",
								"xldb_get_column_optimization",
								"xldb_get_table_optimization_context",
								"xldb_query_rows",
								"xldb_query_view_rows",
								"xldb_get_view_joins",
								"xldb_detach_view_data_source",
								"xldb_apply_rows",
								"xldb_apply_table",
								"xldb_plan_table",
								"xldb_get_view",
								"xldb_list_views",
								"xldb_get_table_schema",
								"xldb_get_workspace_status",
								"xldb_list_tables",
								"create_workspace_bookmark",
								"list_workspace_bookmarks",
								"delete_workspace_bookmark",
								"get_sidebar_tabs",
								"update_sidebar_tabs",
								"set_page_notification_level",
								"calendar_list_calendars",
								"calendar_list_events",
								"calendar_suggest_meeting_times",
								"calendar_list_coworkers_events",
								"calendar_list_calendar_resources",
								"calendar_list_contacts",
								"calendar_list_scheduling_links",
								"calendar_create_events",
								"calendar_update_events",
								"calendar_cancel_events",
								"calendar_create_scheduling_link",
								"calendar_update_scheduling_link",
								"calendar_delete_scheduling_links",
								"get_form",
								"get_self",
								"link_meeting_note_to_calendar_event",
								"convert_to_meetings_database",
								"create_meeting_note"
							],
							"description": "The id of the tool to run."
						}
					},
					{
						"$ref": "#/components/parameters/notionVersion"
					}
				],
				"requestBody": {
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"anyOf": [
									{
										"type": "object",
										"properties": {
											"query": {
												"type": "string",
												"description": "Short, specific keywords for Notion content search. For user search, enter a name or email address. Provide a non-empty query unless intentionally browsing with filters or a non-relevance sort."
											},
											"query_type": {
												"type": "string",
												"enum": ["internal", "user"],
												"description": "Specify type of the query as either \"internal\" or \"user\". Always include this input if performing\n\"user\" search."
											},
											"data_source_url": {
												"type": "string",
												"description": "Optionally restrict keyword search to a data source URL returned in a <data-source> tag."
											},
											"page_url": {
												"type": "string",
												"description": "Optionally restrict keyword search to a page and its descendants. Accepts a Notion page URL or ID."
											},
											"teamspace_id": {
												"type": "string",
												"description": "Optionally, provide the ID of a teamspace to restrict search results to. This will perform a search\nover content within the specified teamspace only. Accepts the teamspace ID (UUIDv4) with or\nwithout dashes."
											},
											"filters": {
												"type": "object",
												"properties": {
													"created_date_range": {
														"type": "object",
														"properties": {
															"start_date": {
																"type": "string",
																"format": "date",
																"description": "The start date of the date range as an ISO 8601 date string, if any."
															},
															"end_date": {
																"type": "string",
																"format": "date",
																"description": "The end date of the date range as an ISO 8601 date string, if any."
															}
														},
														"additionalProperties": false,
														"description": "Optional filter to only produce search results created within the specified date range."
													},
													"created_by_user_ids": {
														"type": "array",
														"items": {
															"type": "string"
														},
														"maxItems": 100,
														"description": "Optional filter to only produce search results created by the Notion users that have the specified user IDs. Use \"me\" for the connected user."
													},
													"edited_by_user_ids": {
														"type": "array",
														"items": {
															"type": "string"
														},
														"maxItems": 100,
														"description": "Optional filter to only produce search results edited by the Notion users that have the specified user IDs. Use \"me\" for the connected user. Available on the Business plan."
													},
													"last_edited_date_range": {
														"type": "object",
														"properties": {
															"start_date": {
																"type": "string",
																"format": "date",
																"description": "The start date of the date range as an ISO 8601 date string, if any."
															},
															"end_date": {
																"type": "string",
																"format": "date",
																"description": "The end date of the date range as an ISO 8601 date string, if any."
															}
														},
														"additionalProperties": false,
														"description": "Optional filter to only produce search results last edited within the specified date range. Available on the Business plan."
													},
													"teamspace_ids": {
														"type": "array",
														"items": {
															"$ref": "#/components/schemas/idRequest"
														},
														"maxItems": 100,
														"description": "Optional filter to only produce search results inside one of the specified teamspaces. Selecting more than one teamspace is available on the Business plan; use teamspace_id for one teamspace on other plans."
													},
													"title_only": {
														"type": "boolean",
														"description": "When true, match the query only against page and database titles instead of page content. Available on the Business plan."
													},
													"content_status": {
														"type": "string",
														"enum": [
															"all_with_archived",
															"all_without_archived",
															"verified_only",
															"archived_only"
														],
														"description": "Which pages to include by status. Omit for the default live pages. Supplying this field, even with the default value, requires Business access."
													}
												},
												"description": "Optional exact filters for Notion workspace search. Omit unless required by the request. Keep filter fields nested here; do not send them at the top level. Some filters require Business access."
											},
											"sort": {
												"type": "string",
												"enum": ["relevance", "last_edited", "created"],
												"description": "Result ordering for Notion workspace search. Omit for the default \"relevance\" ordering. \"last_edited\" and \"created\" require Business access."
											},
											"page_size": {
												"type": "integer",
												"minimum": 1,
												"maximum": 50,
												"description": "Maximum number of results to return (default 10). Lower values reduce response size."
											},
											"max_highlight_length": {
												"type": "integer",
												"minimum": 0,
												"maximum": 500,
												"description": "Maximum character length for result highlights (default 200). Set to 0 to omit highlights entirely."
											}
										},
										"required": ["query"]
									},
									{
										"type": "object",
										"properties": {
											"query": {
												"type": "string",
												"description": "Exact keywords, a page title, a project name, or a concise natural-language question. Keywords are valid; a question is not required. Preserve distinctive names and identifiers. Prefer one topic per call, ideally under 50 words. Provide a non-empty query unless intentionally browsing Notion with filters or a non-relevance sort."
											},
											"query_type": {
												"type": "string",
												"enum": ["internal", "user"],
												"description": "Omit or use \"internal\" for content search. Use \"user\" to look up a workspace user by name or email."
											},
											"data_source_url": {
												"type": "string",
												"description": "Optionally restrict search to a data source URL returned in a <data-source> tag. Omit when searching the whole workspace."
											},
											"page_url": {
												"type": "string",
												"description": "Optionally restrict search to a page and its descendants. Accepts a Notion page URL or ID. Omit when searching the whole workspace."
											},
											"teamspace_id": {
												"type": "string",
												"description": "Optionally restrict search to a teamspace ID."
											},
											"filters": {
												"type": "object",
												"properties": {
													"created_date_range": {
														"type": "object",
														"properties": {
															"start_date": {
																"type": "string",
																"format": "date",
																"description": "The start date of the date range as an ISO 8601 date string, if any."
															},
															"end_date": {
																"type": "string",
																"format": "date",
																"description": "The end date of the date range as an ISO 8601 date string, if any."
															}
														},
														"additionalProperties": false,
														"description": "Optional filter to only produce search results created within the specified date range."
													},
													"created_by_user_ids": {
														"type": "array",
														"items": {
															"type": "string"
														},
														"maxItems": 100,
														"description": "Optional filter to only produce search results created by the Notion users that have the specified user IDs. Use \"me\" for the connected user."
													},
													"edited_by_user_ids": {
														"type": "array",
														"items": {
															"type": "string"
														},
														"maxItems": 100,
														"description": "Optional filter to only produce search results edited by the Notion users that have the specified user IDs. Use \"me\" for the connected user. Available on the Business plan."
													},
													"last_edited_date_range": {
														"type": "object",
														"properties": {
															"start_date": {
																"type": "string",
																"format": "date",
																"description": "The start date of the date range as an ISO 8601 date string, if any."
															},
															"end_date": {
																"type": "string",
																"format": "date",
																"description": "The end date of the date range as an ISO 8601 date string, if any."
															}
														},
														"additionalProperties": false,
														"description": "Optional filter to only produce search results last edited within the specified date range. Available on the Business plan."
													},
													"teamspace_ids": {
														"type": "array",
														"items": {
															"$ref": "#/components/schemas/idRequest"
														},
														"maxItems": 100,
														"description": "Optional filter to only produce search results inside one of the specified teamspaces. Selecting more than one teamspace is available on the Business plan; use teamspace_id for one teamspace on other plans."
													},
													"title_only": {
														"type": "boolean",
														"description": "When true, match the query only against page and database titles instead of page content. Available on the Business plan."
													},
													"content_status": {
														"type": "string",
														"enum": [
															"all_with_archived",
															"all_without_archived",
															"verified_only",
															"archived_only"
														],
														"description": "Which pages to include by status. Omit for the default live pages. Supplying this field, even with the default value, requires Business access."
													}
												},
												"additionalProperties": false,
												"description": "Optional exact filters for Notion pages and databases. Supplying an effective filter selects Notion-only workspace search so the filter is enforced exactly. Omit for unified search across Notion and connected sources. Keep filter fields nested here. Some filters require Business access."
											},
											"sort": {
												"type": "string",
												"enum": ["relevance", "last_edited", "created"],
												"description": "Omit for the default \"relevance\" ordering. \"last_edited\" and \"created\" select Notion-only workspace search and require Business access."
											},
											"page_size": {
												"type": "integer",
												"minimum": 1,
												"maximum": 50,
												"description": "Maximum number of results to return (default 10)."
											},
											"max_highlight_length": {
												"type": "integer",
												"minimum": 0,
												"maximum": 500,
												"description": "Maximum result highlight length (default 200). Set to 0 to omit highlights."
											}
										},
										"additionalProperties": false,
										"required": ["query"]
									},
									{
										"type": "object",
										"properties": {
											"query": {
												"type": "string",
												"minLength": 1,
												"maxLength": 500,
												"pattern": "\\S",
												"description": "Words or a short phrase to find in personal memories."
											},
											"limit": {
												"type": "integer",
												"minimum": 1,
												"maximum": 50,
												"description": "Maximum number of memories to return. Defaults to 10 and cannot exceed 50."
											}
										},
										"additionalProperties": false,
										"required": ["query"]
									},
									{
										"type": "object",
										"properties": {
											"tool_names": {
												"type": "array",
												"items": {
													"type": "string",
													"minLength": 1,
													"maxLength": 100
												},
												"maxItems": 100,
												"description": "Optional RunTool names to include, such as search and ai_search. Omit to return all tools visible to this connection. Unknown or unexposed names are omitted. An empty list returns an empty map."
											}
										},
										"additionalProperties": false
									},
									{
										"type": "object",
										"properties": {
											"id": {
												"type": "string",
												"description": "The ID or URL of the Notion page, database, or data source to fetch. Supports notion.so URLs, Notion Sites URLs (*.notion.site), raw UUIDs, and data source URLs (collection://...). Pass \"memory\" to fetch the connected user's About page and memory database in this workspace without creating them. Pass a notion://docs/* URI to read that documentation resource. Also accepts an explicit saved view URL (view://...) from a database response. If a database block ID returns a validation error, use the collection:// URL from that error. Example: <example>notion://docs/enhanced-markdown-spec</example>."
											},
											"include_transcript": {
												"type": "boolean",
												"description": "Whether to include meeting note transcripts. Defaults to false. When true, full transcripts are included; when false, a placeholder with the meeting note URL is shown instead."
											},
											"include_discussions": {
												"type": "boolean",
												"description": "Whether to include discussion/comment indicators in the page output. When true, adds a <page-discussions> summary with discussion count, preview snippets, and discussion:// URLs. Use with the get_comments tool to retrieve full discussion content. Defaults to false."
											},
											"include_file_urls": {
												"type": "boolean",
												"description": "Whether to return signed download URLs for uploaded files. Defaults to false. When false, page Markdown cites uploaded files by stable notion-file-block:// references and the response has no references map; call get_file_download_urls with the references when you need those files' contents. When true, the response's references map gives the signed URL for each reference."
											}
										},
										"required": ["id"]
									},
									{
										"allOf": [
											{
												"type": "object",
												"properties": {
													"filename": {
														"type": "string",
														"minLength": 1,
														"description": "The filename to create in Notion, including a supported extension such as .html, .md, .pdf, or .png. Required with content and source_url. Omit it with source_file_id; the stored upload already carries a filename."
													},
													"content_type": {
														"type": "string",
														"minLength": 1,
														"maxLength": 255,
														"description": "Optional MIME type, such as text/html or application/pdf. It must match the filename extension; omit it to infer the type from the filename. Omit it with source_file_id; the stored upload already carries a content type."
													}
												}
											},
											{
												"oneOf": [
													{
														"type": "object",
														"properties": {
															"filename": {
																"type": "string",
																"minLength": 1,
																"description": "The filename to create in Notion, including a supported extension such as .html, .md, .pdf, or .png. Required with content and source_url. Omit it with source_file_id; the stored upload already carries a filename."
															},
															"content_type": {
																"type": "string",
																"minLength": 1,
																"maxLength": 255,
																"description": "Optional MIME type, such as text/html or application/pdf. It must match the filename extension; omit it to infer the type from the filename. Omit it with source_file_id; the stored upload already carries a content type."
															},
															"content": {
																"type": "string",
																"maxLength": 204800,
																"description": "The complete UTF-8 text content of the file. Maximum 200 KiB after UTF-8 encoding. Requires filename. Examples: <example><!doctype html><html><body><h1>Report</h1></body></html></example> or <example># Notes\\n\\nHello</example>."
															}
														},
														"required": ["filename", "content"]
													},
													{
														"type": "object",
														"properties": {
															"filename": {
																"type": "string",
																"minLength": 1,
																"description": "The filename to create in Notion, including a supported extension such as .html, .md, .pdf, or .png. Required with content and source_url. Omit it with source_file_id; the stored upload already carries a filename."
															},
															"content_type": {
																"type": "string",
																"minLength": 1,
																"maxLength": 255,
																"description": "Optional MIME type, such as text/html or application/pdf. It must match the filename extension; omit it to infer the type from the filename. Omit it with source_file_id; the stored upload already carries a content type."
															},
															"source_url": {
																"type": "string",
																"minLength": 1,
																"maxLength": 8192,
																"description": "A direct, publicly reachable HTTPS URL from which Notion can download the file within one minute. Notion makes a metadata-only HEAD request when supported, then a GET. Redirects, private network addresses, custom request headers, and cookies are not supported. Downloads are limited to 5 MiB for free workspaces and 50 MiB for paid workspaces. Requires filename. Example: <example>https://storage.example.com/report.pdf?signature=...</example>."
															}
														},
														"required": ["filename", "source_url"]
													},
													{
														"type": "object",
														"properties": {
															"source_file_id": {
																"type": "string",
																"minLength": 1,
																"maxLength": 36,
																"description": "The ID of a file upload this exact integration already created. Use create_file_upload when available; otherwise run `ntn files create` or use the Notion File Upload API with this integration's token. Its status must be uploaded. An upload created with a different token is not visible. Example: <example>1e2f3a4b-5c6d-7e8f-9a0b-1c2d3e4f5a6b</example>."
															}
														},
														"required": ["source_file_id"]
													}
												]
											}
										],
										"title": "Create a Notion attachment",
										"description": "Provide exactly one of content for inline UTF-8 text, source_url for a direct HTTPS download, or source_file_id for a file upload this integration already created."
									},
									{
										"type": "object",
										"properties": {
											"file_upload_id": {
												"$ref": "#/components/schemas/idRequest",
												"description": "The FileUpload ID returned by the create-attachment tool."
											}
										},
										"required": ["file_upload_id"]
									},
									{
										"type": "object",
										"properties": {
											"references": {
												"type": "array",
												"items": {
													"type": "string"
												},
												"maxItems": 25,
												"minItems": 1,
												"uniqueItems": true,
												"description": "Stable notion-file-block:// file references, copied exactly from the Markdown returned by fetch. Up to 25 per call."
											}
										},
										"additionalProperties": false,
										"required": ["references"]
									},
									{
										"type": "object",
										"properties": {
											"pages": {
												"type": "array",
												"items": {
													"type": "object",
													"properties": {
														"properties": {
															"type": "object",
															"additionalProperties": {
																"oneOf": [
																	{
																		"type": "string"
																	},
																	{
																		"type": "number"
																	},
																	{
																		"type": "array",
																		"items": {
																			"type": "string"
																		},
																		"maxItems": 100
																	},
																	{
																		"type": "null"
																	}
																]
															},
															"description": "The properties of the new page, which is a JSON map of property names to SQLite values.\nFor pages in a database, use the SQLite schema definition shown in <database>.\nFor pages outside of a database, the only allowed property is \"title\", which is the title of the page and is automatically shown at the top of the page as a large heading.\n**IMPORTANT**: Some property types require specific formats:\n\t- Date properties: Split into \"date:{property}:start\", \"date:{property}:end\" (optional), and\n\t  \"date:{property}:is_datetime\" (0 or 1)\n\t- Place properties: Split into \"place:{property}:name\", \"place:{property}:address\",\n\t  \"place:{property}:latitude\", \"place:{property}:longitude\", and\n\t  \"place:{property}:google_place_id\" (optional)\n\t- Number properties: Use JavaScript numbers (not strings)\n\t- Checkbox properties: Use \"__YES__\" for checked, \"__NO__\" for unchecked\n\t- Relation properties: Use an array of related page URLs or page IDs, e.g.\n\t  [\"https://www.notion.so/26ab1f9f4c5f80b18d3bd10a6b1d2f4e\", \"26ab1f9f-4c5f-80b1-8d3b-d10a6b1d2f4e\"]\n\t- Person properties: Use an array of user IDs, user or agent URLs, or group references\n\t  copied from fetch output (\"space_permission_group-<UUID>\"). Bare group UUIDs are also supported.\n\t- Files properties: Use a JSON array of file IDs, Notion Folder URLs, and/or <folder> tags\n\t  copied from fetch output. Folders are stored as native Folder references, not ordinary links.\n\n\t**Special property naming**: Properties named \"id\" or \"url\" (case insensitive) must be\n\tprefixed with \"userDefined:\" (e.g., \"userDefined:URL\", \"userDefined:id\")"
														},
														"content": {
															"type": "string",
															"description": "The content of the new page, using Notion Markdown. For people and dates, use user and date mentions rather than plain text; notion://docs/enhanced-markdown-spec gives the syntax."
														},
														"template_id": {
															"type": "string",
															"description": "The ID of a template to apply to this page. When specified, do not provide 'content' as the template will provide it. Properties can still be set alongside the template. Get template IDs from the <templates> section in the fetch tool results. Template application is asynchronous: the page starts blank and content appears shortly after."
														},
														"icon": {
															"type": "string",
															"description": "An emoji character (e.g. \"🚀\"), a custom emoji by name (e.g. \":rocket_ship:\"), a Notion icon identifier as returned by fetch (e.g. \"icons/pizza_blue\"), or an external image URL. Use \"none\" to explicitly set no icon. Omit to leave unchanged. Keep the title free of a duplicate leading emoji because the icon renders separately."
														},
														"cover": {
															"type": "string",
															"description": "An external image URL for the page cover. Use \"none\" to explicitly set no cover. Omit to leave unchanged."
														},
														"is_skill": {
															"type": "boolean",
															"description": "Set to true only when the user asks for reusable instructions or a repeatable workflow. Do not mark ordinary reference pages, one-time documents, or drafts as skills. Before creating a skill, read the MCP resource `notion://docs/skills` through your MCP client's resource-reading interface. If your client does not support reading MCP resources, call the Notion \"fetch\" tool with this URI instead. Do NOT pass this URI to any other URL-fetching tool. False has the same effect as omitting the field."
														},
														"preserve_internal_links": {
															"type": "boolean",
															"description": "Preserve internal Markdown links instead of converting them to native mentions."
														}
													},
													"additionalProperties": false
												},
												"maxItems": 100,
												"description": "The pages to create."
											},
											"creation_mode": {
												"type": "string",
												"const": "draft",
												"description": "If the user explicitly names a private or shared destination, omit \"creation_mode\" and use that parent. Otherwise, use \"draft\" when the user clearly wants a durable page but has not named a destination. Prefer this explicit draft mode over omitting the parent. Draft mode is server-enforced: it creates a private workspace-level page and cannot be combined with \"parent\". Create it without first asking where it should live. After creation, tell the user it is private and offer to move it once they name a destination."
											},
											"parent": {
												"oneOf": [
													{
														"type": "string",
														"const": "memory",
														"description": "Always `memory`"
													},
													{
														"type": "object",
														"properties": {
															"page_id": {
																"type": "string",
																"description": "The ID of the parent page (with or without dashes), for example, 195de9221179449fab8075a27c979105"
															},
															"type": {
																"type": "string",
																"const": "page_id",
																"description": "Always `page_id`"
															}
														},
														"required": ["page_id"]
													},
													{
														"type": "object",
														"properties": {
															"database_id": {
																"type": "string",
																"description": "The ID of the parent database (with or without dashes), for example, 195de9221179449fab8075a27c979105"
															},
															"type": {
																"type": "string",
																"const": "database_id",
																"description": "Always `database_id`"
															}
														},
														"required": ["database_id"]
													},
													{
														"type": "object",
														"properties": {
															"data_source_id": {
																"type": "string",
																"description": "The ID of the parent data source (collection), with or without dashes. For example, f336d0bc-b841-465b-8045-024475c079dd"
															},
															"type": {
																"type": "string",
																"const": "data_source_id",
																"description": "Always `data_source_id`"
															}
														},
														"required": ["data_source_id"]
													},
													{
														"type": "object",
														"properties": {
															"teamspace_id": {
																"type": "string",
																"description": "The ID of the teamspace in which to create top-level pages (with or without dashes)."
															}
														},
														"additionalProperties": false,
														"required": ["teamspace_id"]
													}
												],
												"description": "All pages in one call share this parent. Pass \"memory\" to save a personal memory; see notion://docs/memory. Otherwise use a page (page_id), database page (database_id), data source (data_source_id), or teamspace root (teamspace_id, from get_teams). Teamspace roots require a user-backed connection and permission to add top-level pages. A database_id cannot be used when the database has more than one data source; fetch it and use the right collection:// URL as data_source_id. If omitted, pages are private at the workspace level. When no destination is named, prefer explicit \"creation_mode\": \"draft\" over omitting the parent."
											},
											"allow_async": {
												"type": "boolean",
												"description": "Default to true for page creation. Set to false only when the next step needs the created pages immediately, or when async execution rejects the request as too large. When this create operation is accepted for background execution, it returns an async_task result. Use get_async_task to wait for a succeeded status before taking a dependent action on the pages. For pages created with template_id, a succeeded status does not mean template content is ready; fetch and retry until it is ready before changing or relying on that content. If omitted or false, the tool keeps the existing synchronous result shape."
											}
										},
										"required": ["pages"]
									},
									{
										"type": "object",
										"properties": {
											"page_id": {
												"type": "string",
												"description": "The page ID, with or without dashes, or a Notion page URL."
											},
											"command": {
												"type": "string",
												"enum": [
													"update_properties",
													"update_content",
													"replace_content",
													"insert_content",
													"apply_template",
													"update_verification"
												],
												"description": "The update command to execute."
											},
											"properties": {
												"type": "object",
												"additionalProperties": {
													"oneOf": [
														{
															"type": "string"
														},
														{
															"type": "number"
														},
														{
															"type": "array",
															"items": {
																"oneOf": [
																	{
																		"type": "string"
																	},
																	{
																		"type": "object",
																		"properties": {
																			"type": {
																				"type": "string",
																				"const": "file_upload",
																				"description": "Always `file_upload`"
																			},
																			"file_upload": {
																				"type": "object",
																				"properties": {
																					"id": {
																						"type": "string",
																						"description": "ID of a file upload returned by create_file_upload or create_attachment."
																					}
																				},
																				"required": ["id"],
																				"description": "The uploaded file to attach to the Files property."
																			}
																		},
																		"required": ["type", "file_upload"]
																	}
																]
															},
															"maxItems": 100
														},
														{
															"type": "null"
														}
													]
												},
												"description": "Used by the \"update_properties\" command, and required unless \"icon\", \"cover\", or \"is_skill\" is set. A JSON object that updates the page's properties.\nFor pages in a database, fetch the page or its data source first and use the exact property names and SQLite schema definition shown in <database>.\nFor page titles outside a database, use \"title\" in inline Markdown.\nFor a Files property, an uploaded file can be provided as {\"type\":\"file_upload\",\"file_upload\":{\"id\":\"<file-upload-id>\"}} inside the property's array.\nUse null to remove a property's value.\n**IMPORTANT**: Some property types require specific formats:\n\t- Date properties: Split into \"date:{property}:start\", \"date:{property}:end\" (optional), and\n\t  \"date:{property}:is_datetime\" (0 or 1)\n\t- Place properties: Split into \"place:{property}:name\", \"place:{property}:address\",\n\t  \"place:{property}:latitude\", \"place:{property}:longitude\", and\n\t  \"place:{property}:google_place_id\" (optional)\n\t- Number properties: Use JavaScript numbers (not strings)\n\t- Checkbox properties: Use \"__YES__\" for checked, \"__NO__\" for unchecked\n\t- Relation properties: Use an array of related page URLs or page IDs, e.g.\n\t  [\"https://www.notion.so/26ab1f9f4c5f80b18d3bd10a6b1d2f4e\", \"26ab1f9f-4c5f-80b1-8d3b-d10a6b1d2f4e\"]\n\t- Person properties: Use an array of user IDs, user or agent URLs, or group references\n\t  copied from fetch output (\"space_permission_group-<UUID>\"). Bare group UUIDs are also supported.\n\t- Files properties: Use a JSON array of file IDs, Notion Folder URLs, and/or <folder> tags\n\t  copied from fetch output. Folders are stored as native Folder references, not ordinary links.\n\n\t**Special property naming**: Properties named \"id\" or \"url\" (case insensitive) must be\n\tprefixed with \"userDefined:\" (e.g., \"userDefined:URL\", \"userDefined:id\")"
											},
											"new_str": {
												"type": "string",
												"description": "Required for \"replace_content\" command. The new content string to replace the entire page content with. Preserve child pages and databases with their exact fetched <page url=\"...\"> or <database url=\"...\"> tags. For people and dates, use user and date mentions rather than plain text; notion://docs/enhanced-markdown-spec gives the syntax."
											},
											"content": {
												"type": "string",
												"description": "Required for \"insert_content\" command. The markdown content to insert into the page. For people and dates, use user and date mentions rather than plain text; notion://docs/enhanced-markdown-spec gives the syntax."
											},
											"content_updates": {
												"type": "array",
												"items": {
													"type": "object",
													"properties": {
														"old_str": {
															"type": "string",
															"minLength": 1,
															"description": "The existing content string to find and replace. Must exactly match the page content."
														},
														"new_str": {
															"type": "string",
															"description": "The new content string to replace old_str with. For people and dates, use user and date mentions rather than plain text; notion://docs/enhanced-markdown-spec gives the syntax."
														},
														"replace_all_matches": {
															"type": "boolean",
															"description": "If true, replaces all occurrences of old_str. If false (default), the operation fails if there are multiple matches."
														}
													},
													"required": ["old_str", "new_str"]
												},
												"maxItems": 100,
												"description": "Required for \"update_content\" command. An array of search-and-replace operations, each with old_str (content to find) and new_str (replacement content). Operations that match are applied, and each one that matches nothing is reported in \"warnings\". The call fails only when no operation that changes content matches."
											},
											"position": {
												"oneOf": [
													{
														"type": "object",
														"properties": {
															"type": {
																"type": "string",
																"const": "start",
																"description": "Insert the content at the start of the page."
															}
														},
														"required": ["type"]
													},
													{
														"type": "object",
														"properties": {
															"type": {
																"type": "string",
																"const": "end",
																"description": "Insert the content at the end of the page."
															}
														},
														"required": ["type"]
													}
												],
												"description": "Optional for \"insert_content\" command. Use {\"type\":\"start\"} to prepend content or {\"type\":\"end\"} to append content. Omit to append."
											},
											"allow_deleting_content": {
												"type": "boolean",
												"description": "Optional for \"replace_content\" and \"update_content\" commands. Set to true to allow deletion of child pages and databases that are not referenced in the new content. If false or omitted, the operation will fail with an error listing the pages/databases that would be deleted. Show that list and ask the user for confirmation before retrying with true."
											},
											"template_id": {
												"type": "string",
												"description": "Required for \"apply_template\" command. The ID of a template to apply to this page; any page ID can be used as a template. Template content is appended to any existing page content asynchronously."
											},
											"verification_status": {
												"type": "string",
												"enum": ["verified", "unverified"],
												"description": "Required for \"update_verification\" command. Set to \"verified\" to mark the page as verified, or \"unverified\" to remove verification. Requires a Business or Enterprise plan unless the page is in a wiki. When updating verification, the owner will be automatically set to the authenticated actor."
											},
											"verification_expiry_days": {
												"type": "integer",
												"minimum": 1,
												"description": "Optional for \"update_verification\" command when verification_status is \"verified\". Number of days until verification expires (e.g. 7, 30, 90). Omit for indefinite verification."
											},
											"icon": {
												"type": "string",
												"description": "An emoji character (e.g. \"🚀\"), a custom emoji by name (e.g. \":rocket_ship:\"), a Notion icon identifier as returned by fetch (e.g. \"icons/pizza_blue\"), or an external image URL. Use \"none\" to remove the icon. Omit to leave unchanged. Can be set alongside any command. To change only the icon, use \"update_properties\" and omit \"properties\". Keep the title free of a duplicate leading emoji because the icon renders separately."
											},
											"cover": {
												"type": "string",
												"description": "An external image URL for the page cover. Use \"none\" to remove the cover. Omit to leave unchanged. Can be set alongside any command. To change only the cover, use \"update_properties\" and omit \"properties\"."
											},
											"is_skill": {
												"type": "boolean",
												"description": "Set to true to mark this page as a skill, or false to remove the skill designation. Can be set alongside any command. To change only skill status, use \"update_properties\" and omit \"properties\". Before creating a skill, read the MCP resource `notion://docs/skills` through your MCP client's resource-reading interface. If your client does not support reading MCP resources, call the Notion \"fetch\" tool with this URI instead. Do NOT pass this URI to any other URL-fetching tool."
											},
											"allow_async": {
												"type": "boolean",
												"description": "Default to true for page updates. Set to false only when the next step needs the updated page immediately, or when async execution rejects the request as too large. When this update operation is accepted for background execution, it returns an async_task result. Use get_async_task to wait for a succeeded status before taking a dependent action on the page. For apply_template, a succeeded status does not mean template content is ready; fetch and retry until it is ready before changing or relying on that content. If omitted or false, the tool waits for a synchronous result when possible, but may still return a pollable async_task response if queued execution exceeds the synchronous wait deadline."
											},
											"draft_mode": {
												"type": "boolean",
												"description": "Optional. When true, your edit is saved in revision as draft for the user to review and apply, and the page is not changed. Use it when the user wants to review changes before they take effect."
											},
											"change_description": {
												"type": "string",
												"maxLength": 2000,
												"description": "Optional. One short sentence on why you are changing this page and what has changed. The user sees it next to this page's changes when they review them."
											}
										},
										"required": ["page_id", "command"]
									},
									{
										"type": "object",
										"properties": {
											"page_ids": {
												"type": "array",
												"items": {
													"type": "string"
												},
												"maxItems": 20,
												"minItems": 1,
												"description": "IDs of the pages to move to Trash, 1 to 20. Database rows are pages. Duplicate IDs are processed once."
											},
											"user_confirmed": {
												"type": "boolean",
												"description": "Set to true only after the user explicitly asked to delete these exact pages, or confirmed after you showed them the list. If omitted or false, nothing is trashed and the error lists what would be moved to Trash so you can confirm with the user."
											}
										},
										"additionalProperties": false,
										"required": ["page_ids"]
									},
									{
										"type": "object",
										"properties": {
											"database_ids": {
												"type": "array",
												"items": {
													"type": "string"
												},
												"maxItems": 20,
												"minItems": 1,
												"description": "IDs of the databases to move to Trash, 1 to 20. Each must be a full-page or inline database that owns its data, not a linked view. Duplicate IDs are processed once."
											},
											"user_confirmed": {
												"type": "boolean",
												"description": "Set to true only after the user explicitly asked to delete these exact databases, or confirmed after you showed them the list. If omitted or false, nothing is trashed and the error lists what would be moved to Trash so you can confirm with the user."
											}
										},
										"additionalProperties": false,
										"required": ["database_ids"]
									},
									{
										"type": "object",
										"properties": {
											"page_ids": {
												"type": "array",
												"items": {
													"type": "string"
												},
												"maxItems": 20,
												"minItems": 1,
												"description": "IDs of 1 to 20 pages or databases in Trash. Database rows are pages. Duplicate IDs are restored once."
											}
										},
										"additionalProperties": false,
										"required": ["page_ids"]
									},
									{
										"type": "object",
										"properties": {
											"page_url": {
												"type": "string",
												"minLength": 1,
												"maxLength": 2000,
												"format": "uri",
												"description": "The full Notion URL of the page to mark as a skill."
											}
										},
										"required": ["page_url"]
									},
									{
										"type": "object",
										"properties": {
											"action": {
												"type": "string",
												"enum": ["prepare", "complete"],
												"description": "Prepare an upload or complete a previously uploaded archive."
											},
											"page_id": {
												"type": "string",
												"format": "uuid",
												"description": "Target page in a Skills database. Create a new page first to import a new skill."
											},
											"content_length": {
												"type": "integer",
												"minimum": 1,
												"maximum": 20971520,
												"description": "Required for prepare. Exact compressed archive size in bytes (maximum 20 MiB)."
											},
											"checksum_crc32": {
												"type": "string",
												"pattern": "^[A-Za-z0-9+/]{6}==$",
												"examples": ["AAAAAA=="],
												"description": "Required for prepare. Base64-encoded big-endian CRC32 of the tar.gz bytes; S3 verifies it on upload."
											},
											"upload_token": {
												"type": "string",
												"minLength": 1,
												"maxLength": 16384,
												"description": "Required for complete. Opaque token from prepare. Bound to the integration, workspace, and page; expires after ten minutes."
											}
										},
										"additionalProperties": false,
										"required": ["action", "page_id"]
									},
									{
										"type": "object",
										"properties": {
											"id": {
												"$ref": "#/components/schemas/idRequest",
												"description": "Identifier for a Notion skill page."
											}
										},
										"additionalProperties": false,
										"required": ["id"]
									},
									{
										"type": "object",
										"properties": {},
										"additionalProperties": false
									},
									{
										"type": "object",
										"required": ["skill_url", "settings"],
										"additionalProperties": false,
										"properties": {
											"skill_url": {
												"type": "string",
												"description": "The URL of an existing Notion Skill in the current workspace."
											},
											"settings": {
												"type": "object",
												"additionalProperties": false,
												"properties": {
													"enabled": {
														"type": "boolean",
														"description": "Enable or disable this Skill in Notion Agent. Disabling also clears placements and connected-agent use."
													},
													"use_automatically": {
														"type": "boolean",
														"description": "Allow agents to use this enabled Skill automatically when relevant. Set false to require explicit invocation without disabling the Skill or changing its placements."
													},
													"use_in_connected_agents": {
														"type": "boolean",
														"description": "Make this Skill available to agents connected over MCP, independently of its Notion Agent installation. Requires a non-empty Skill description."
													},
													"show_in_chat": {
														"type": "boolean",
														"description": "Show this enabled Skill in the Agent chat menu."
													},
													"show_in_editor": {
														"type": "boolean",
														"description": "Show this enabled Skill in the text selection menu."
													},
													"show_during_meetings": {
														"type": "boolean",
														"description": "Show this enabled Skill during AI meeting notes."
													},
													"show_after_meetings": {
														"type": "boolean",
														"description": "Show this enabled Skill after AI meeting notes."
													}
												},
												"description": "Change only the provided settings. Automatic use and placements require enabling the Skill first or in this request. Connected-agent use is independent of Notion Agent installation. Disabling the Skill also clears connected-agent use."
											}
										}
									},
									{
										"type": "object",
										"additionalProperties": false,
										"properties": {
											"add_skill_urls": {
												"type": "array",
												"maxItems": 50,
												"uniqueItems": true,
												"items": {
													"type": "string",
													"description": "A Notion Skill page URL."
												},
												"description": "Notion Skill page URLs to enable for the current user on every surface."
											},
											"remove_skill_urls": {
												"type": "array",
												"maxItems": 50,
												"uniqueItems": true,
												"items": {
													"type": "string",
													"description": "A Notion Skill page URL."
												},
												"description": "Notion Skill page URLs to turn off on the requested surfaces."
											},
											"surfaces": {
												"type": "array",
												"maxItems": 2,
												"items": {
													"type": "string",
													"enum": ["mcp", "notion_ai"]
												},
												"description": "Surfaces to turn remove_skill_urls off for. Defaults to both external MCP and Notion AI. Does not apply to add_skill_urls."
											}
										}
									},
									{
										"type": "object",
										"properties": {
											"page_or_database_ids": {
												"type": "array",
												"items": {
													"type": "string"
												},
												"maxItems": 100,
												"minItems": 1,
												"description": "An array of up to 100 page or database IDs to move. IDs are v4 UUIDs and can be supplied with or without dashes (e.g. extracted from a <page> or <database> URL given by the \"search\" or \"fetch\" tool). Data Sources under Databases can't be moved individually."
											},
											"new_parent": {
												"oneOf": [
													{
														"type": "object",
														"properties": {
															"page_id": {
																"type": "string",
																"description": "The ID of the parent page (with or without dashes), for example, 195de9221179449fab8075a27c979105"
															},
															"type": {
																"type": "string",
																"const": "page_id",
																"description": "Always `page_id`"
															}
														},
														"required": ["page_id"]
													},
													{
														"type": "object",
														"properties": {
															"database_id": {
																"type": "string",
																"description": "The ID of the parent database (with or without dashes), for example, 195de9221179449fab8075a27c979105"
															},
															"type": {
																"type": "string",
																"const": "database_id",
																"description": "Always `database_id`"
															}
														},
														"required": ["database_id"]
													},
													{
														"type": "object",
														"properties": {
															"data_source_id": {
																"type": "string",
																"description": "The ID of the parent data source (collection), with or without dashes. For example, f336d0bc-b841-465b-8045-024475c079dd"
															},
															"type": {
																"type": "string",
																"const": "data_source_id",
																"description": "Always `data_source_id`"
															}
														},
														"required": ["data_source_id"]
													},
													{
														"type": "object",
														"properties": {
															"type": {
																"type": "string",
																"const": "workspace",
																"description": "The parent type."
															}
														},
														"required": ["type"]
													}
												],
												"description": "The new parent under which the pages will be moved. This can be a page, the workspace, a database, or a specific data source under a database when there are multiple. Moving pages to the workspace level adds them as private pages and should rarely be used."
											}
										},
										"required": ["page_or_database_ids", "new_parent"]
									},
									{
										"type": "object",
										"properties": {
											"page_id": {
												"type": "string",
												"description": "The page ID, with or without dashes, or a Notion page URL."
											}
										},
										"required": ["page_id"]
									},
									{
										"allOf": [
											{
												"type": "object",
												"properties": {
													"parent": {
														"type": "object",
														"properties": {
															"page_id": {
																"type": "string",
																"description": "The ID of the parent page, with or without dashes."
															},
															"type": {
																"type": "string",
																"const": "page_id",
																"description": "Always `page_id`"
															}
														},
														"required": ["page_id"],
														"description": "The parent under which to create the new database. If omitted, the database will be created as a private page at the workspace level."
													},
													"title": {
														"type": "string",
														"description": "The title of the new database."
													},
													"description": {
														"type": "string",
														"description": "The description of the new database."
													}
												}
											},
											{
												"oneOf": [
													{
														"type": "object",
														"properties": {
															"schema": {
																"type": "string",
																"description": "SQL DDL CREATE TABLE statement defining the database schema. Cannot be combined with database_type. Column names must be double-quoted and type options use single quotes.\n\nProperty type syntax:\n- Simple: TITLE, RICH_TEXT, DATE, PEOPLE, CHECKBOX, URL, EMAIL, PHONE_NUMBER, FILES\n- SELECT('opt':color, ...) / MULTI_SELECT('opt':color, ...)\n- STATUS('Backlog':gray:to_do, 'Building':blue:in_progress, 'Shipped':green:complete); groups are to_do, in_progress, complete\n- NUMBER [FORMAT 'dollar'] / FORMULA('expression')\n- RELATION('ds') for a one-way relation\n- RELATION('ds', DUAL) for a two-way relation\n- RELATION('ds', DUAL 'Children') with a synced property name\n- RELATION('ds', DUAL 'Children' 'children') with a synced name and synced_id (for self-relations)\n- ROLLUP('rel_prop', 'target_prop', 'function')\n- UNIQUE_ID [PREFIX 'X'] / CREATED_TIME / LAST_EDITED_TIME\n- Any column: COMMENT 'description text'\nColors: default, gray, brown, orange, yellow, green, blue, purple, pink, red.\n\nExamples:\n- Minimal: <example>CREATE TABLE (\"Name\" TITLE)</example>\n- With options: <example>CREATE TABLE (\"Name\" TITLE, \"Budget\" NUMBER FORMAT 'dollar', \"Tags\" MULTI_SELECT('eng':blue, 'design':pink), \"Task ID\" UNIQUE_ID PREFIX 'PRJ')</example>\n- Self-relations are a two-step flow: create the database, then use its data source ID with update_data_source to add paired properties such as RELATION('ds', DUAL 'Children' 'children')."
															}
														},
														"required": ["schema"]
													},
													{
														"type": "object",
														"properties": {
															"database_type": {
																"type": "string",
																"enum": ["tasks", "projects", "skills"],
																"description": "Create a canonical typed database with Notion's required properties and metadata. Supported types: tasks, projects, skills. Example: <example>tasks</example>. Use title \"Tasks\" when needed."
															}
														},
														"required": ["database_type"]
													}
												]
											}
										]
									},
									{
										"type": "object",
										"properties": {
											"parent": {
												"oneOf": [
													{
														"type": "object",
														"properties": {
															"page_id": {
																"type": "string",
																"description": "The ID of the page that will own the Folder."
															}
														},
														"additionalProperties": false,
														"required": ["page_id"]
													},
													{
														"type": "object",
														"properties": {
															"folder_id": {
																"type": "string",
																"description": "The ID of the Folder that will contain the new Folder."
															}
														},
														"additionalProperties": false,
														"required": ["folder_id"]
													}
												],
												"description": "Where to create the Folder."
											},
											"title": {
												"type": "string",
												"description": "The title of the new Folder."
											}
										},
										"required": ["parent", "title"]
									},
									{
										"type": "object",
										"properties": {
											"folder_id": {
												"type": "string",
												"description": "The ID of the Folder to update."
											},
											"command": {
												"type": "string",
												"enum": ["add_files", "remove_files", "add_subfolder"],
												"description": "The Folder update to apply."
											},
											"file_upload_ids": {
												"type": "array",
												"items": {
													"type": "string"
												},
												"maxItems": 100,
												"minItems": 1,
												"uniqueItems": true,
												"description": "Required for add_files. One or more file upload IDs returned by the file upload tools."
											},
											"file_urls": {
												"type": "array",
												"items": {
													"type": "string"
												},
												"maxItems": 100,
												"minItems": 1,
												"uniqueItems": true,
												"description": "Required for remove_files. The exact file URLs shown in the Folder's latest fetch output."
											},
											"title": {
												"type": "string",
												"description": "Required for add_subfolder. The new Folder's title."
											}
										},
										"additionalProperties": false,
										"required": ["folder_id", "command"]
									},
									{
										"type": "object",
										"properties": {
											"data_source_id": {
												"type": "string",
												"description": "The data source to update. Accepts a collection:// URI from <data-source> tags, a bare UUID, or a database ID (only if the database has a single data source)."
											},
											"statements": {
												"type": "string",
												"description": "Semicolon-separated SQL DDL statements to update the schema. Supports ADD COLUMN, DROP COLUMN, RENAME COLUMN, and ALTER COLUMN SET.\n\nProperty type syntax:\n- Simple: TITLE, RICH_TEXT, DATE, PEOPLE, CHECKBOX, URL, EMAIL, PHONE_NUMBER, FILES\n- SELECT('opt':color, ...) / MULTI_SELECT('opt':color, ...)\n- STATUS('Backlog':gray:to_do, 'Building':blue:in_progress, 'Shipped':green:complete); groups are to_do, in_progress, complete\n- NUMBER [FORMAT 'dollar'] / FORMULA('expression')\n- RELATION('ds') for a one-way relation\n- RELATION('ds', DUAL) for a two-way relation\n- RELATION('ds', DUAL 'Children') with a synced property name\n- RELATION('ds', DUAL 'Children' 'children') with a synced name and synced_id (for self-relations)\n- ROLLUP('rel_prop', 'target_prop', 'function')\n- UNIQUE_ID [PREFIX 'X'] / CREATED_TIME / LAST_EDITED_TIME\n- Any column: COMMENT 'description text'\nColors: default, gray, brown, orange, yellow, green, blue, purple, pink, red.\n\nExamples:\n- <example>ADD COLUMN \"Priority\" SELECT('High':red, 'Medium':yellow, 'Low':green); ADD COLUMN \"Due Date\" DATE</example>\n- <example>RENAME COLUMN \"Status\" TO \"Project Status\"</example>\n- <example>DROP COLUMN \"Old Property\"</example>\n- For a self-relation, add both relation properties in one call with matching DUAL names and IDs, such as <example>ADD COLUMN \"Parent\" RELATION('ds', DUAL 'Children' 'children')</example>."
											},
											"title": {
												"type": "string",
												"description": "The new title of the data source."
											},
											"description": {
												"type": "string",
												"description": "The new description of the data source."
											},
											"is_inline": {
												"type": "boolean",
												"description": "Whether the database should display inline (true) or as full page (false). Only applicable for single-source databases."
											},
											"in_trash": {
												"type": "boolean",
												"description": "Move data source to trash. Cannot be undone without Notion UI."
											},
											"page_layout": {
												"type": "object",
												"description": "Replaces the data source's page layout. Refer to existing properties by name. See notion://docs/database-page-layouts. Example: <example>{\"main\":[{\"type\":\"title\",\"pinnedProperties\":[\"Status\",\"Owner\"]},{\"type\":\"editor\"},{\"type\":\"discussions\"}],\"sidebar\":[{\"type\":\"properties\"}]}</example>.",
												"required": ["main"],
												"additionalProperties": false,
												"properties": {
													"main": {
														"type": "array",
														"description": "Main area modules in order. Include a title, an editor (unless the layout has a tab), and discussions.",
														"items": {
															"oneOf": [
																{
																	"type": "object",
																	"required": ["type"],
																	"additionalProperties": false,
																	"properties": {
																		"type": {
																			"type": "string",
																			"enum": [
																				"cover",
																				"editor",
																				"discussions",
																				"relations",
																				"backlinks",
																				"page_sections",
																				"bottom_controls"
																			],
																			"description": "The module type."
																		}
																	}
																},
																{
																	"$ref": "#/components/schemas/pageLayoutPropertiesModule"
																},
																{
																	"$ref": "#/components/schemas/pageLayoutPropertiesSectionsModule"
																},
																{
																	"type": "object",
																	"required": ["type"],
																	"additionalProperties": false,
																	"properties": {
																		"type": {
																			"type": "string",
																			"enum": ["title"],
																			"description": "The module type."
																		},
																		"pinnedProperties": {
																			"type": "array",
																			"items": {
																				"type": "string"
																			},
																			"description": "Property names to show under the title."
																		},
																		"propertyLabels": {
																			"type": "string",
																			"enum": ["show", "hide"],
																			"description": "Whether pinned properties show their names."
																		}
																	}
																},
																{
																	"$ref": "#/components/schemas/pageLayoutPropertyModule"
																},
																{
																	"type": "object",
																	"required": ["type", "relation"],
																	"additionalProperties": false,
																	"properties": {
																		"type": {
																			"type": "string",
																			"enum": ["views"],
																			"description": "The module type."
																		},
																		"relation": {
																			"type": "string",
																			"description": "The name of a two-way relation property whose related pages show as a view."
																		}
																	}
																}
															]
														}
													},
													"sidebar": {
														"type": "array",
														"description": "Sidebar modules in order. Only properties and property modules are allowed.",
														"items": {
															"oneOf": [
																{
																	"$ref": "#/components/schemas/pageLayoutPropertiesModule"
																},
																{
																	"$ref": "#/components/schemas/pageLayoutPropertiesSectionsModule"
																},
																{
																	"$ref": "#/components/schemas/pageLayoutPropertyModule"
																}
															]
														}
													},
													"tab": {
														"type": "object",
														"description": "Puts page content in a tab next to database views. Omit for a simple layout.",
														"required": ["modules"],
														"additionalProperties": false,
														"properties": {
															"id": {
																"type": "string",
																"description": "The existing tab ID from fetch. Omit for a new tab. Starts with view_tab_."
															},
															"modules": {
																"type": "array",
																"description": "Tab modules in order. Must include an editor. Only properties, property modules, discussions, relations, and the editor are allowed.",
																"items": {
																	"oneOf": [
																		{
																			"type": "object",
																			"required": ["type"],
																			"additionalProperties": false,
																			"properties": {
																				"type": {
																					"type": "string",
																					"enum": [
																						"editor",
																						"discussions",
																						"relations"
																					],
																					"description": "The module type."
																				}
																			}
																		},
																		{
																			"$ref": "#/components/schemas/pageLayoutPropertiesModule"
																		},
																		{
																			"$ref": "#/components/schemas/pageLayoutPropertiesSectionsModule"
																		},
																		{
																			"$ref": "#/components/schemas/pageLayoutPropertyModule"
																		}
																	]
																}
															}
														}
													},
													"format": {
														"type": "object",
														"description": "Page display options.",
														"additionalProperties": false,
														"properties": {
															"propertyIcons": {
																"type": "string",
																"enum": ["show", "hide"],
																"description": "Whether property icons show on the page."
															},
															"pageFullWidth": {
																"type": "boolean",
																"description": "Whether pages open at full width."
															}
														}
													}
												}
											}
										},
										"required": ["data_source_id"]
									},
									{
										"allOf": [
											{
												"type": "object",
												"properties": {
													"page_id": {
														"type": "string",
														"description": "The page ID, with or without dashes, or a Notion page URL."
													},
													"reply_to_comment_id": {
														"type": "string",
														"description": "The ID of the comment to reply to."
													},
													"discussion_id": {
														"type": "string",
														"description": "The ID or URL of an existing discussion to reply to (e.g., discussion://pageId/blockId/discussionId)."
													},
													"selection_with_ellipsis": {
														"type": "string",
														"description": "Unique content snippet: ~10 characters from each end, joined by \"...\". A match within one block's text gets an inline comment on that text; otherwise, comment on the block where the match starts. No match returns an error."
													}
												},
												"required": ["page_id"]
											},
											{
												"oneOf": [
													{
														"type": "object",
														"properties": {
															"rich_text": {
																"type": "array",
																"items": {
																	"$ref": "#/components/schemas/richTextItemRequest"
																},
																"maxItems": 100,
																"description": "An array of rich text objects that represent the content of the comment. Provide exactly one of rich_text or markdown."
															}
														},
														"required": ["rich_text"]
													},
													{
														"type": "object",
														"properties": {
															"markdown": {
																"type": "string",
																"description": "The content of the comment as a Markdown string. Provide exactly one of markdown or rich_text. For exact syntax, read the MCP resource `notion://docs/enhanced-markdown-spec` through your MCP client's resource-reading interface, or call the Notion \"fetch\" tool with this URI if your client does not support reading MCP resources. Do NOT pass this URI to any other URL-fetching tool. Use only the Rich text types and Mentions syntax that comments support. Comments support inline formatting (bold, italic, strikethrough, underline, code, links), inline math using $`Equation`$, and user/page/database/date mention tags such as <mention-date start=\"YYYY-MM-DD\"/>. To attach a file created by create-file-upload or create-attachment, include its returned suggested_markdown on a separate line; up to three file attachments are supported. Do not use UI shortcuts like @today, @name, [[page]], or autocomplete-style emoji syntax; those are editor affordances, not markdown syntax. Mention tags must include a real url where required by the spec. Other block-level Markdown such as fenced code blocks, headings, lists, tables, and blockquotes is stored as plain comment text rather than rendered as blocks. Example: <example>Looks good.</example>."
															}
														},
														"required": ["markdown"]
													}
												]
											}
										]
									},
									{
										"type": "object",
										"properties": {
											"page_id": {
												"type": "string",
												"description": "The page ID, with or without dashes, or a Notion page URL."
											},
											"include_resolved": {
												"type": "boolean",
												"description": "Include resolved discussions in the response. Defaults to false."
											},
											"include_all_blocks": {
												"type": "boolean",
												"description": "Include discussions on child blocks, not just page-level discussions. Defaults to false."
											},
											"discussion_id": {
												"type": "string",
												"description": "Fetch a specific discussion by ID or discussion URL (e.g., discussion://pageId/blockId/discussionId)."
											}
										},
										"required": ["page_id"]
									},
									{
										"type": "object",
										"properties": {
											"comment_id": {
												"type": "string",
												"description": "The comment ID, with or without dashes. Use the id of a <comment> from get_comments, or the id returned by create_comment."
											},
											"markdown": {
												"type": "string",
												"description": "The full replacement text for the comment, as inline Markdown. It replaces the whole comment, so include any text you want to keep. Use the same inline syntax as create_comment. Lists, headings, and other block-level Markdown are not supported in comments."
											}
										},
										"additionalProperties": false,
										"required": ["comment_id", "markdown"]
									},
									{
										"type": "object",
										"properties": {
											"comment_id": {
												"type": "string",
												"description": "The comment ID, with or without dashes. Use the id of a <comment> from get_comments, or the id returned by create_comment."
											}
										},
										"additionalProperties": false,
										"required": ["comment_id"]
									},
									{
										"type": "object",
										"properties": {
											"discussion_id": {
												"type": "string",
												"description": "The discussion ID or URL, such as the id of a <discussion> from get_comments (discussion://pageId/blockId/discussionId) or the discussion_id returned by create_comment."
											},
											"resolved": {
												"type": "boolean",
												"description": "True to resolve the discussion, false to reopen it."
											}
										},
										"additionalProperties": false,
										"required": ["discussion_id", "resolved"]
									},
									{
										"type": "object",
										"properties": {
											"comment_id": {
												"type": "string",
												"description": "The comment ID, with or without dashes. Use the id of a <comment> from get_comments, or the id returned by create_comment."
											},
											"emoji": {
												"type": "string",
												"examples": ["👍"],
												"description": "One standard Unicode emoji."
											},
											"reacted": {
												"type": "boolean",
												"description": "True to add the reaction, false to remove it."
											}
										},
										"additionalProperties": false,
										"required": ["comment_id", "emoji", "reacted"]
									},
									{
										"type": "object",
										"properties": {
											"page_url": {
												"type": "string",
												"description": "URL of the database row page that has the formula property."
											},
											"property_name": {
												"type": "string",
												"description": "Name of the formula property to evaluate."
											}
										},
										"additionalProperties": false,
										"required": ["page_url", "property_name"]
									},
									{
										"type": "object",
										"properties": {
											"url": {
												"type": "string",
												"description": "Rollup-result reference returned on a database row page."
											},
											"page_size": {
												"type": "integer",
												"minimum": 1,
												"maximum": 100,
												"description": "Maximum number of related rows in one result window."
											},
											"start_cursor": {
												"type": "string",
												"description": "Opaque cursor returned by an earlier call."
											}
										},
										"additionalProperties": false,
										"required": ["url"]
									},
									{
										"type": "object",
										"properties": {
											"filter": {
												"type": "string",
												"enum": ["archived", "unread_and_read", "unread_only"],
												"description": "Which notifications to return."
											},
											"limit": {
												"type": "number",
												"description": "Maximum number of notifications to return. Defaults to 20 and is capped at 100."
											},
											"cursor": {
												"type": "string",
												"description": "Pagination cursor from a previous response."
											},
											"after": {
												"type": "number",
												"minimum": 0,
												"description": "Return notifications strictly after this Unix timestamp in milliseconds."
											},
											"before": {
												"type": "number",
												"minimum": 0,
												"description": "Return notifications strictly before this Unix timestamp in milliseconds."
											}
										},
										"additionalProperties": false
									},
									{
										"type": "object",
										"properties": {
											"notification_ids": {
												"type": "array",
												"items": {
													"type": "string"
												},
												"description": "Notification IDs to update, up to 100 per call."
											},
											"action": {
												"type": "string",
												"enum": [
													"markAsRead",
													"markAsUnread",
													"archive",
													"unarchive"
												],
												"description": "The inbox state update to apply."
											}
										},
										"additionalProperties": false,
										"required": ["notification_ids", "action"]
									},
									{
										"type": "object",
										"properties": {
											"task_id": {
												"type": "string",
												"minLength": 1,
												"examples": ["task_abc123"],
												"description": "The ID of the async task to retrieve, as returned in the async_task response of the tool that started it."
											}
										},
										"required": ["task_id"]
									},
									{
										"type": "object",
										"properties": {
											"query": {
												"type": "string",
												"minLength": 1,
												"maxLength": 100,
												"description": "Optional search query to filter users by name or email (case-insensitive)."
											},
											"start_cursor": {
												"type": "string",
												"minLength": 1,
												"description": "Cursor for pagination. Use the next_cursor value from the previous response to get the next page."
											},
											"page_size": {
												"type": "integer",
												"minimum": 1,
												"maximum": 100,
												"description": "Number of users to return per page (1–100; default 100)."
											},
											"user_id": {
												"type": "string",
												"minLength": 1,
												"maxLength": 100,
												"description": "Return only the user matching this ID. Pass \"self\" to fetch the current user."
											}
										}
									},
									{
										"type": "object",
										"properties": {
											"message": {
												"type": "string",
												"minLength": 1,
												"description": "The Slack message to post as a reply in the triggering thread. Use Slack markdown formatting."
											},
											"unfurl_links": {
												"type": "boolean",
												"description": "Whether Slack should unfurl links in the reply. Defaults to true."
											}
										},
										"required": ["message"]
									},
									{
										"type": "object",
										"properties": {
											"data": {
												"oneOf": [
													{
														"type": "object",
														"properties": {
															"data_source_urls": {
																"type": "array",
																"items": {
																	"type": "string"
																},
																"maxItems": 100,
																"description": "Notion data source URLs whose SQLite tables are available to the query;\neach data source is exposed as a table named by its URL. Obtain them from the\nfetch tool, in the format: collection://f336d0bc-b841-465b-8045-024475c079dd"
															},
															"query": {
																"type": "string",
																"description": "Read-only SQLite query to execute against the data sources. Use a data\nsource URL as the table name, e.g. SELECT * FROM \"collection://...\" WHERE ....\nUse only table and column names shown in the fetched `<sqlite-table>` definition;\ndate properties use the expanded column names listed there, not the base name.\nExample: if the fetched schema has a date property `Due`, use `\"date:Due:start\"`, not `\"Due\"`.\nProperties of type `created_time` or `last_edited_time` keep their exact fetched\nbase columns (e.g. `\"Created\"` only if listed). A formula or another property\nwith a date-looking name or result does not automatically have `date:` columns\nor become queryable. Copy actual fetched columns, not property labels.\nInclude every needed filter in WHERE (filters on views of the data source are\nnot automatically applied). For time comparisons or ordering, normalize text\ntimestamps with datetime(...) or date(...).\nSQL text values can omit rich-text mentions and formatting, and links can\nlose their destination. Use faithful rows mode or fetch the page before rewriting\na rich-text property."
															},
															"mode": {
																"type": "string",
																"const": "sql",
																"description": "Optional mode parameter. Defaults to 'sql' if not specified. SQL mode does not accept is_archived; that parameter belongs only to view mode."
															},
															"params": {
																"type": "array",
																"items": {
																	"oneOf": [
																		{
																			"type": "string"
																		},
																		{
																			"type": "number"
																		},
																		{
																			"type": "boolean"
																		},
																		{
																			"type": "null"
																		}
																	]
																},
																"maxItems": 100,
																"description": "Positional parameters bound to `?` placeholders in the query. Prefer\nparameterized queries over string interpolation. Use \"__YES__\" for checked\ncheckboxes and \"__NO__\" for unchecked checkboxes."
															}
														},
														"additionalProperties": false,
														"required": ["data_source_urls", "query"],
														"title": "Sql"
													},
													{
														"type": "object",
														"properties": {
															"mode": {
																"type": "string",
																"const": "view",
																"description": "Mode for executing a database view's existing query"
															},
															"view_url": {
																"type": "string",
																"description": "URL of a specific database view to query.\nExample: https://www.notion.so/workspace/db-id?v=view-id"
															},
															"start_cursor": {
																"type": "string",
																"minLength": 1,
																"maxLength": 200,
																"description": "Cursor for pagination. Use the next_cursor value from the previous response to get the next page."
															},
															"page_size": {
																"type": "integer",
																"minimum": 1,
																"maximum": 100,
																"description": "Number of rows to return per page (default: 100, max: 100)."
															},
															"is_archived": {
																"type": "boolean",
																"description": "Optional archive selector. Omitted or false queries non-archived rows only; true queries archived rows only."
															}
														},
														"additionalProperties": false,
														"required": ["mode", "view_url"],
														"title": "View"
													},
													{
														"type": "object",
														"properties": {
															"mode": {
																"type": "string",
																"const": "rows",
																"description": "Return data source rows with rich-text mentions, links, formatting, dates, and equations preserved."
															},
															"data_source_url": {
																"type": "string",
																"description": "One Notion data source URL obtained from a fetch result."
															},
															"filter": {
																"$ref": "#/components/schemas/workflowViewFilter",
																"description": "Structured filter using exact property names from the data source schema. Supports an outer Boolean group plus one nested group level."
															},
															"sort": {
																"type": "array",
																"items": {
																	"type": "object",
																	"properties": {
																		"property": {
																			"type": "string",
																			"description": "Exact data source property name to sort."
																		},
																		"direction": {
																			"type": "string",
																			"enum": ["ascending", "descending"],
																			"description": "One of: `ascending`, `descending`"
																		}
																	},
																	"additionalProperties": false,
																	"required": ["property", "direction"]
																},
																"maxItems": 100,
																"description": "Structured property sorts applied in order."
															},
															"limit": {
																"type": "integer",
																"minimum": 1,
																"maximum": 100,
																"description": "Number of rows to return (default: 50, max: 100)."
															}
														},
														"additionalProperties": false,
														"required": ["mode", "data_source_url"],
														"title": "Rows"
													}
												],
												"description": "Mode parameter reference and examples.\n\nPut `mode`, `query`, `data_source_urls`, `data_source_url`, `params`, `limit`, filters (`filter`), sorts (`sort`), and view arguments (`view_url`, `start_cursor`, `page_size`, `is_archived`) inside `data`, never at the tool-argument root.\nAll examples below are complete tool arguments with exactly one outer `data` wrapper. Pass them as shown; do not add another wrapper.\n\nSQL mode:\n- Use single quotes for SQL string values, such as `\"Status\" = 'Done'`. Use double quotes for table and column names. In SQL, `''` is an empty string.\n- Prefer `?` placeholders for values. For text values, the `params` array uses JSON strings, so `[\"\"]` passes an empty string and `[\"__YES__\"]` passes a checked checkbox value. Do not add SQL quote marks around a bound value.\n- Checkbox SQL values: `'__YES__'` means checked; `'__NO__'` means unchecked.\n\nRows mode:\nReturn up to 100 rows with faithful rich-text property values and optional structured filters and sorts.\n\nExample:\n<example>{\"data\":{\"mode\":\"rows\",\"data_source_url\":\"collection://f336d0bc-b841-465b-8045-024475c079dd\",\"filter\":{\"type\":\"group\",\"operator\":\"and\",\"filters\":[{\"type\":\"property\",\"property\":\"Status\",\"propertyType\":\"select\",\"operator\":\"enum_is\",\"value\":{\"type\":\"exact\",\"value\":\"In Progress\"}}]},\"limit\":20}}</example>\n\nExamples:\n- Simple SQL: <example>{\"data\":{\"data_source_urls\":[\"collection://f336d0bc-b841-465b-8045-024475c079dd\"],\"query\":\"SELECT * FROM [collection://f336d0bc-b841-465b-8045-024475c079dd] LIMIT 10\"}}</example>\n- SQL parameters: <example>{\"data\":{\"mode\":\"sql\",\"data_source_urls\":[\"collection://f336d0bc-b841-465b-8045-024475c079dd\"],\"query\":\"SELECT * FROM [collection://f336d0bc-b841-465b-8045-024475c079dd] WHERE Status = ? AND Priority = ?\",\"params\":[\"In Progress\",\"High\"]}}</example>\n- Checkbox query: <example>{\"data\":{\"data_source_urls\":[\"collection://f336d0bc-b841-465b-8045-024475c079dd\"],\"query\":\"SELECT * FROM [collection://f336d0bc-b841-465b-8045-024475c079dd] WHERE Completed = ?\",\"params\":[\"__YES__\"]}}</example>\n\nView mode:\nExecute a specific database view's query with its filters and sorts.\nOmit \"is_archived\" or set it to false for non-archived rows. Set\n\"is_archived\": true to apply the view inside the archived partition.\nWhen the response has \"has_more\": true, pass its \"next_cursor\" as\n\"start_cursor\" in a follow-up view-mode request with the same \"is_archived\"\nvalue.\n\nExample:\n<example>{\"data\":{\"mode\":\"view\",\"view_url\":\"https://www.notion.so/f336d0bcb841465b8045024475c079dd?v=0123456789abcdef0123456789abcdef\",\"is_archived\":false}}</example>\n"
											}
										},
										"required": ["data"]
									},
									{
										"type": "object",
										"properties": {
											"query": {
												"type": "string",
												"description": "Read-only SQLite query to execute against the data sources. Use a data\nsource URL as the table name, e.g. SELECT * FROM \"collection://...\" WHERE ....\nUse only table and column names shown in the fetched `<sqlite-table>` definition;\ndate properties use the expanded column names listed there, not the base name.\nExample: if the fetched schema has a date property `Due`, use `\"date:Due:start\"`, not `\"Due\"`.\nProperties of type `created_time` or `last_edited_time` keep their exact fetched\nbase columns (e.g. `\"Created\"` only if listed). A formula or another property\nwith a date-looking name or result does not automatically have `date:` columns\nor become queryable. Copy actual fetched columns, not property labels.\nInclude every needed filter in WHERE (filters on views of the data source are\nnot automatically applied). For time comparisons or ordering, normalize text\ntimestamps with datetime(...) or date(...).\nSQL text values can omit rich-text mentions and formatting, and links can\nlose their destination. Use faithful rows mode or fetch the page before rewriting\na rich-text property."
											},
											"data_source_urls": {
												"type": "array",
												"items": {
													"type": "string"
												},
												"maxItems": 100,
												"minItems": 2,
												"description": "Notion data source URLs whose SQLite tables are available to the query;\neach data source is exposed as a table named by its URL. Obtain them from the\nfetch tool, in the format: collection://f336d0bc-b841-465b-8045-024475c079dd"
											},
											"params": {
												"type": "array",
												"items": {
													"oneOf": [
														{
															"type": "string"
														},
														{
															"type": "number"
														},
														{
															"type": "boolean"
														},
														{
															"type": "null"
														}
													]
												},
												"maxItems": 100,
												"description": "Positional parameters bound to `?` placeholders in the query. Prefer\nparameterized queries over string interpolation. Use \"__YES__\" for checked\ncheckboxes and \"__NO__\" for unchecked checkboxes."
											},
											"mode": {
												"type": "string",
												"const": "sql",
												"description": "Optional SQL mode marker. This tool only supports SQL queries."
											}
										},
										"additionalProperties": false,
										"required": ["query", "data_source_urls"]
									},
									{
										"type": "object",
										"properties": {
											"filter": {
												"type": "object",
												"properties": {
													"operator": {
														"type": "string",
														"enum": ["and", "or"],
														"description": "Operator for combinator filters."
													},
													"filters": {
														"type": "array",
														"items": {
															"oneOf": [
																{
																	"$ref": "#/components/schemas/meetingNotesPropertyFilter"
																},
																{
																	"type": "object",
																	"properties": {
																		"operator": {
																			"type": "string",
																			"enum": ["and", "or"],
																			"description": "Whether every child must match, or any of them."
																		},
																		"filters": {
																			"type": "array",
																			"items": {
																				"$ref": "#/components/schemas/meetingNotesPropertyFilter"
																			},
																			"maxItems": 100,
																			"description": "The conditions in this group. A group with no conditions matches nothing, so send at least one."
																		}
																	},
																	"additionalProperties": false,
																	"required": ["operator", "filters"]
																}
															]
														},
														"maxItems": 100,
														"description": "Nested filters; each may be a combinator (and/or) or property filter."
													}
												},
												"required": ["operator"],
												"description": "Meeting note filter reference.\n\nTitle keyword searching uses a filter on property \"title\" (for example, string_contains).\nReturns up to 50 rows of matching meeting notes.\n\nFilterable properties:\n- \"title\" (text) — meeting title\n- \"attendees\" (person) — meeting attendees\n- \"created_time\" (date) — when the meeting note was created\n- \"created_by\" (person) — who created the meeting note\n- \"last_edited_time\" (date) — when the meeting note was last edited\n- \"last_edited_by\" (person) — who last edited the meeting note\n\nCombinator filters use \"filters\" (not \"operands\"):\n{\n  \"operator\": \"and\" | \"or\",\n  \"filters\": [ ... ]\n}\n\nDate filtering (recommended default: date_is_within):\n- Prefer \"date_is_within\" for relative windows like \"past N days/weeks/months\".\n- Relative (common): { type: \"relative\", value: \"the_past_week\" | \"the_past_month\" | \"this_week\" }\n- Relative (custom): { type: \"relative\", value: \"custom\", direction: \"past\" | \"future\", unit: \"day\" | \"week\" | \"month\" | \"year\", count: <number> }\n- Exact range: { type: \"exact\", value: { type: \"daterange\", start_date: \"YYYY-MM-DD\", end_date: \"YYYY-MM-DD\" } }\n- Single-date operators (\"date_is\", \"date_is_before\", \"date_is_after\", \"date_is_on_or_before\", \"date_is_on_or_after\"):\n  - Exact: { type: \"exact\", value: { type: \"date\", start_date: \"YYYY-MM-DD\" } }\n  - Relative shortcuts: today | tomorrow | yesterday | one_week_ago | one_week_from_now | one_month_ago | one_month_from_now\n\nTitle keyword filtering (OR vs AND):\n- Use OR (\"operator\": \"or\") when unsure or for broad discovery.\n- Use AND (\"operator\": \"and\") when the user is specific and you want to narrow results.\n- Break multi-word phrases into individual terms and filter on each term separately.\n\nExamples:\n- Past week: <example>{\"operator\":\"and\",\"filters\":[{\"property\":\"created_time\",\"filter\":{\"operator\":\"date_is_within\",\"value\":{\"type\":\"relative\",\"value\":\"the_past_week\"}}}]}</example>\n- Past 3 days: <example>{\"operator\":\"and\",\"filters\":[{\"property\":\"created_time\",\"filter\":{\"operator\":\"date_is_within\",\"value\":{\"type\":\"relative\",\"value\":\"custom\",\"direction\":\"past\",\"unit\":\"day\",\"count\":3}}}]}</example>\n- Exact date range: <example>{\"operator\":\"and\",\"filters\":[{\"property\":\"created_time\",\"filter\":{\"operator\":\"date_is_within\",\"value\":{\"type\":\"exact\",\"value\":{\"type\":\"daterange\",\"start_date\":\"2025-01-01\",\"end_date\":\"2025-12-31\"}}}}]}</example>\n- Created after a date: <example>{\"operator\":\"and\",\"filters\":[{\"property\":\"created_time\",\"filter\":{\"operator\":\"date_is_after\",\"value\":{\"type\":\"exact\",\"value\":{\"type\":\"date\",\"start_date\":\"2025-06-01\"}}}}]}</example>\n- Specific attendee: <example>{\"operator\":\"and\",\"filters\":[{\"property\":\"attendees\",\"filter\":{\"operator\":\"person_contains\",\"value\":[{\"type\":\"exact\",\"value\":{\"table\":\"notion_user\",\"id\":\"<user-id>\"}}]}}]}</example>\n- Attendee since a date: <example>{\"operator\":\"and\",\"filters\":[{\"property\":\"created_time\",\"filter\":{\"operator\":\"date_is_on_or_after\",\"value\":{\"type\":\"exact\",\"value\":{\"type\":\"date\",\"start_date\":\"2025-01-01\"}}}},{\"property\":\"attendees\",\"filter\":{\"operator\":\"person_contains\",\"value\":[{\"type\":\"exact\",\"value\":{\"table\":\"notion_user\",\"id\":\"<user-id>\"}}]}}]}</example>\n- Title contains both terms: <example>{\"operator\":\"and\",\"filters\":[{\"property\":\"title\",\"filter\":{\"operator\":\"string_contains\",\"value\":{\"type\":\"exact\",\"value\":\"design\"}}},{\"property\":\"title\",\"filter\":{\"operator\":\"string_contains\",\"value\":{\"type\":\"exact\",\"value\":\"review\"}}}]}</example>\n- Title contains either term: <example>{\"operator\":\"or\",\"filters\":[{\"property\":\"title\",\"filter\":{\"operator\":\"string_contains\",\"value\":{\"type\":\"exact\",\"value\":\"standup\"}}},{\"property\":\"title\",\"filter\":{\"operator\":\"string_contains\",\"value\":{\"type\":\"exact\",\"value\":\"sync\"}}}]}</example>"
											}
										}
									},
									{
										"type": "object",
										"properties": {
											"query": {
												"type": "string",
												"minLength": 1,
												"maxLength": 100,
												"description": "Optional search query to filter agents by name or description (case-insensitive)."
											},
											"start_cursor": {
												"type": "string",
												"minLength": 1,
												"description": "Cursor for pagination. Use the next_cursor value from the previous response to get the next page."
											},
											"page_size": {
												"type": "integer",
												"minimum": 1,
												"maximum": 100,
												"description": "Number of agents to return per page (default: 50, max: 100)."
											}
										}
									},
									{
										"type": "object",
										"properties": {
											"scope": {
												"type": "string",
												"enum": ["favorites", "workspace"],
												"description": "Which agents to list: \"favorites\" for the current user's favorite agents, or \"workspace\" for agents shared with the workspace."
											},
											"query": {
												"type": "string",
												"description": "Search text matched against agent names and descriptions. Queries return one page and cannot use a cursor. When omitted, favorites are returned in sidebar order and workspace agents are returned newest first."
											},
											"limit": {
												"type": "number",
												"description": "Maximum results to return (1-200)."
											},
											"cursor": {
												"type": "string",
												"description": "Opaque pagination cursor from the previous response."
											}
										},
										"additionalProperties": false,
										"required": ["scope"]
									},
									{
										"type": "object",
										"properties": {
											"question": {
												"type": "string",
												"description": "What you want to find in past sessions."
											},
											"lookback": {
												"type": "string",
												"description": "How far back to search, such as \"30d\" or \"1y\". Leave it out to search the past year."
											}
										},
										"required": ["question"]
									},
									{
										"type": "object",
										"properties": {
											"query": {
												"type": "string",
												"maxLength": 2000,
												"description": "A case-insensitive substring search over session titles."
											},
											"filter": {
												"oneOf": [
													{
														"$ref": "#/components/schemas/sessionIdFilter"
													},
													{
														"$ref": "#/components/schemas/sessionAgentIdFilter"
													},
													{
														"$ref": "#/components/schemas/sessionStatusFilter"
													},
													{
														"$ref": "#/components/schemas/sessionTimestampFilter"
													},
													{
														"type": "object",
														"required": ["and"],
														"additionalProperties": false,
														"properties": {
															"and": {
																"type": "array",
																"maxItems": 100,
																"description": "Return sessions that match every child filter.",
																"items": {
																	"$ref": "#/components/schemas/sessionNestedFilter"
																}
															}
														}
													},
													{
														"type": "object",
														"required": ["or"],
														"additionalProperties": false,
														"properties": {
															"or": {
																"type": "array",
																"maxItems": 100,
																"description": "Return sessions that match any child filter.",
																"items": {
																	"$ref": "#/components/schemas/sessionNestedFilter"
																}
															}
														}
													}
												],
												"description": "A session property filter, or an and/or compound filter nested up to two levels deep."
											},
											"sorts": {
												"type": "array",
												"items": {
													"type": "object",
													"properties": {
														"property": {
															"type": "string",
															"enum": ["created_at", "updated_at"],
															"description": "One of: `created_at`, `updated_at`"
														},
														"direction": {
															"type": "string",
															"enum": ["ascending", "descending"],
															"description": "One of: `ascending`, `descending`"
														}
													},
													"additionalProperties": false,
													"required": ["property", "direction"]
												},
												"maxItems": 2,
												"minItems": 1,
												"description": "Ordered sort precedence. Defaults to updated_at descending."
											},
											"start_cursor": {
												"type": "string",
												"description": "The continuation cursor returned by the previous page."
											},
											"page_size": {
												"type": "integer",
												"minimum": 1,
												"maximum": 100,
												"description": "The number of sessions to return. Maximum: 100."
											}
										},
										"additionalProperties": false
									},
									{
										"type": "object",
										"properties": {
											"agent_url": {
												"type": "string",
												"minLength": 1,
												"description": "Published Custom Agent URL in agent://<spaceId>/<agentId> format, as returned by search_agents."
											},
											"initial_message": {
												"type": "string",
												"minLength": 1,
												"description": "Initial message for the new session."
											}
										},
										"required": ["agent_url", "initial_message"]
									},
									{
										"type": "object",
										"properties": {
											"session_url": {
												"type": "string",
												"minLength": 1,
												"description": "Use the complete session_url returned by session tools, unchanged. Format: session://<spaceId>/<sessionId>. Shorthand session://<sessionId> and thread://<sessionId> use the connected workspace. Fully qualified URLs must refer to that workspace."
											}
										},
										"required": ["session_url"]
									},
									{
										"type": "object",
										"properties": {
											"session_url": {
												"type": "string",
												"minLength": 1,
												"description": "Use the complete session_url returned by session tools, unchanged. Format: session://<spaceId>/<sessionId>. Shorthand session://<sessionId> and thread://<sessionId> use the connected workspace. Fully qualified URLs must refer to that workspace."
											},
											"seconds": {
												"type": "integer",
												"minimum": 1,
												"maximum": 60,
												"description": "Maximum number of seconds to wait."
											}
										},
										"required": ["session_url", "seconds"]
									},
									{
										"type": "object",
										"properties": {
											"session_url": {
												"type": "string",
												"minLength": 1,
												"description": "Use the complete session_url returned by session tools, unchanged. Format: session://<spaceId>/<sessionId>. Shorthand session://<sessionId> and thread://<sessionId> use the connected workspace. Fully qualified URLs must refer to that workspace."
											}
										},
										"required": ["session_url"]
									},
									{
										"type": "object",
										"properties": {
											"session_url": {
												"type": "string",
												"minLength": 1,
												"description": "Use the complete session_url returned by session tools, unchanged. Format: session://<spaceId>/<sessionId>. Shorthand session://<sessionId> and thread://<sessionId> use the connected workspace. Fully qualified URLs must refer to that workspace."
											},
											"message": {
												"type": "string",
												"minLength": 1,
												"description": "Follow-up message to send."
											}
										},
										"required": ["session_url", "message"]
									},
									{
										"type": "object",
										"properties": {
											"session_url": {
												"type": "string",
												"minLength": 1,
												"description": "Use the complete session_url returned by session tools, unchanged. Format: session://<spaceId>/<sessionId>. Shorthand session://<sessionId> and thread://<sessionId> use the connected workspace. Fully qualified URLs must refer to that workspace."
											},
											"count": {
												"type": "integer",
												"minimum": 1,
												"maximum": 100,
												"description": "Maximum number of committed events to return."
											},
											"before_sequence": {
												"type": "integer",
												"minimum": 1,
												"description": "Load the previous page of events ending before this sequence number."
											},
											"after_sequence": {
												"type": "integer",
												"minimum": 1,
												"description": "Load the next page of events starting after this sequence number."
											}
										},
										"required": ["session_url", "count"]
									},
									{
										"type": "object",
										"properties": {
											"session_url": {
												"type": "string",
												"minLength": 1,
												"description": "Use the complete session_url returned by session tools, unchanged. Format: session://<spaceId>/<sessionId>. Shorthand session://<sessionId> and thread://<sessionId> use the connected workspace. Fully qualified URLs must refer to that workspace."
											},
											"sequence": {
												"type": "integer",
												"minimum": 1,
												"description": "Committed event sequence number to read."
											}
										},
										"required": ["session_url", "sequence"]
									},
									{
										"type": "object",
										"properties": {
											"data_source_id": {
												"type": "string",
												"description": "The data source (collection) ID. Accepts a collection:// URI from <data-source> tags or a bare UUID."
											},
											"name": {
												"type": "string",
												"description": "The name of the view."
											},
											"type": {
												"type": "string",
												"enum": [
													"table",
													"board",
													"list",
													"calendar",
													"timeline",
													"gallery",
													"form",
													"chart",
													"map",
													"dashboard"
												],
												"description": "The type of view to create."
											},
											"database_id": {
												"type": "string",
												"description": "The database to add a view tab to. Accepts a Notion URL or a bare UUID. Mutually exclusive with `parent_page_id`; exactly one must be provided."
											},
											"parent_page_id": {
												"type": "string",
												"description": "A page to create an inline linked database view on, like the UI /linked command. Accepts a Notion URL or a bare UUID. The new linked view block is appended at the end of the page and references `data_source_id`. Mutually exclusive with `database_id`; exactly one must be provided."
											},
											"show_data_source_title": {
												"type": "boolean",
												"description": "Whether the new linked view block shows its data source title above the view, like the Show data source title toggle in the Notion app. Defaults to true. Only valid with `parent_page_id`."
											},
											"configure": {
												"type": "string",
												"description": "View configuration DSL directives and examples:\n- FILTER \"Property\" = \"value\" — filter rows. Relation values must be a page\n  URL or UUID; person values must be a user URI (user://<user_id>), user\n  UUID, or \"me\". Names are not supported for either.\n- QUICK FILTER \"Property\" — add a quick filter to the view's filter bar with\n  no criteria; add a condition to preselect one (QUICK FILTER \"Status\" = \"Done\")\n- SORT BY \"Property\" ASC — sort rows\n- GROUP BY \"Property\" [BY OPTION | BY GROUP] [SHOW EMPTY | HIDE EMPTY] — group by property (required for board views)\n- SUB GROUP BY \"Property\" [BY OPTION | BY GROUP] [SHOW EMPTY | HIDE EMPTY] — add board sub-grouping\nBY OPTION and BY GROUP apply only to status properties and rollups that return status values (Show original or Show unique). For select and multi_select properties, omit both modifiers, even if the property is named \"Status\" (for example, GROUP BY \"Status\").\n- CARD LAYOUT default | compact — set board or gallery card layout\n- CARD SIZE small|medium|large — set gallery card size independently of its cover\n- CALENDAR BY \"Property\" — date property (required for calendar views)\n- TIMELINE BY \"Start\" TO \"End\" — date range (required for timeline views)\n- MAP BY \"Property\" — location property (required for map views)\n- CHART column|bar|line|donut|number — chart type with optional AGGREGATE, COLOR, HEIGHT, SORT, STACK BY, CAPTION\n- FORM CLOSE|OPEN — close/open form submissions\n- FORM ANONYMOUS true|false — toggle anonymous submissions\n- FORM PERMISSIONS none|reader|editor — set submission permissions\n- SHOW \"Prop1\", \"Prop2\" — set visible properties\n- WIDTH \"Prop1\" 320, \"Prop2\" 120 — set table column widths in pixels\n- COVER \"Property\" — cover image property\n- WRAP PROPERTIES true|false — wrap configured gallery property values\n- ICON \"🚀\" — view tab icon: an emoji, a Notion icon such as \"icons/rocket_blue\", or an image URL\n\n<example>SHOW \"Name\", \"Status\", \"Due Date\"</example>\n<example>GROUP BY \"Status\" BY GROUP SHOW EMPTY; SUB GROUP BY \"Priority\"; CARD LAYOUT compact</example>\n<example>SHOW \"Name\", \"Status\"; CARD SIZE small; WRAP PROPERTIES true</example>\n<example>FILTER \"Status\" = \"In Progress\"; SORT BY \"Due Date\" ASC</example>\n<example>CALENDAR BY \"Due Date\"</example>\n<example>TIMELINE BY \"Start\" TO \"End\"</example>\n<example>FILTER \"Company\" = \"Acme\"</example>"
											}
										},
										"required": ["data_source_id", "name", "type"]
									},
									{
										"type": "object",
										"properties": {
											"view_id": {
												"type": "string",
												"description": "The view to update. Accepts a view:// URI, a Notion URL with ?v= parameter, or a bare UUID."
											},
											"name": {
												"type": "string",
												"description": "New name for the view."
											},
											"configure": {
												"type": "string",
												"description": "View configuration DSL string. Supports FILTER, QUICK FILTER, SORT BY, GROUP BY, SUB GROUP BY, CARD LAYOUT, CARD SIZE, CALENDAR BY, TIMELINE BY, MAP BY, CHART, FORM, SHOW, HIDE, COVER, WRAP CELLS, WRAP PROPERTIES, FREEZE COLUMNS, ICON, WIDTH, and CLEAR directives. BY OPTION and BY GROUP apply only to status properties and rollups that return status values (Show original or Show unique). For select and multi_select properties, omit both modifiers, even if the property is named \"Status\" (for example, GROUP BY \"Status\")."
											}
										},
										"required": ["view_id"]
									},
									{
										"type": "object",
										"properties": {
											"title": {
												"type": "string",
												"description": "New display title for the column."
											},
											"tableId": {
												"type": "string",
												"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$",
												"description": "ID of the XL database table."
											},
											"columnId": {
												"type": "string",
												"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$",
												"description": "ID of the column to rename."
											}
										},
										"additionalProperties": false,
										"required": ["title", "tableId", "columnId"]
									},
									{
										"type": "object",
										"properties": {
											"tableId": {
												"type": "string",
												"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$",
												"description": "ID of the XL database table."
											},
											"columnId": {
												"type": "string",
												"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$",
												"description": "ID of the column to delete."
											}
										},
										"additionalProperties": false,
										"required": ["tableId", "columnId"]
									},
									{
										"type": "object",
										"properties": {
											"viewId": {
												"type": "string",
												"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$",
												"description": "ID of the XLDB view whose column will be removed."
											},
											"columnId": {
												"type": "string",
												"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$",
												"description": "ID of the view column to remove."
											},
											"expectedViewGeneration": {
												"type": "integer",
												"minimum": 1,
												"maximum": 9007199254740991,
												"description": "Generation of the view read before this edit."
											}
										},
										"additionalProperties": false,
										"required": ["viewId", "columnId", "expectedViewGeneration"]
									},
									{
										"type": "object",
										"properties": {
											"viewId": {
												"type": "string",
												"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$",
												"description": "ID of the XLDB view whose join will be removed."
											},
											"joinId": {
												"type": "string",
												"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$",
												"description": "ID of the join to remove."
											},
											"expectedViewGeneration": {
												"type": "integer",
												"minimum": 1,
												"maximum": 9007199254740991,
												"description": "Generation of the view read before this edit."
											}
										},
										"additionalProperties": false,
										"required": ["viewId", "joinId", "expectedViewGeneration"]
									},
									{
										"type": "object",
										"properties": {
											"viewId": {
												"type": "string",
												"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$",
												"description": "ID of the XLDB view whose joins will change."
											},
											"leftColumnId": {
												"type": "string",
												"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$",
												"description": "ID of the base table column to match against the joined database."
											},
											"expectedViewGeneration": {
												"type": "integer",
												"minimum": 1,
												"maximum": 9007199254740991,
												"description": "Current view generation from get view. Rejects changes made against an older view definition."
											},
											"source": {
												"oneOf": [
													{
														"type": "object",
														"properties": {
															"type": {
																"type": "string",
																"const": "xldb",
																"description": "Always `xldb`"
															},
															"tableId": {
																"type": "string",
																"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$",
																"description": "ID of the XLDB table to join."
															},
															"rightColumnId": {
																"type": "string",
																"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$",
																"description": "ID of the joined table column to match against leftColumnId."
															},
															"selectedColumnIds": {
																"type": "array",
																"items": {
																	"type": "string",
																	"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"
																},
																"maxItems": 30,
																"minItems": 1,
																"uniqueItems": true,
																"description": "IDs of columns from the joined table to include in the view."
															}
														},
														"additionalProperties": false,
														"required": [
															"type",
															"tableId",
															"rightColumnId",
															"selectedColumnIds"
														]
													},
													{
														"type": "object",
														"properties": {
															"type": {
																"type": "string",
																"const": "collection",
																"description": "Always `collection`"
															},
															"collectionId": {
																"type": "string",
																"format": "uuid",
																"description": "ID of the Notion database collection to join."
															},
															"rightPropertyId": {
																"type": "string",
																"description": "Property ID in the Notion database to match against leftColumnId."
															},
															"selectedPropertyIds": {
																"type": "array",
																"items": {
																	"type": "string"
																},
																"maxItems": 100,
																"minItems": 1,
																"uniqueItems": true,
																"description": "Property IDs from the Notion database to include in the view."
															}
														},
														"additionalProperties": false,
														"required": [
															"type",
															"collectionId",
															"rightPropertyId",
															"selectedPropertyIds"
														]
													}
												],
												"description": "Database to join, the matching field, and the fields to include."
											}
										},
										"additionalProperties": false,
										"required": [
											"viewId",
											"leftColumnId",
											"expectedViewGeneration",
											"source"
										]
									},
									{
										"type": "object",
										"properties": {
											"viewId": {
												"type": "string",
												"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$",
												"description": "ID of the XLDB view whose joins will change."
											},
											"leftColumnId": {
												"type": "string",
												"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$",
												"description": "ID of the base table column to match against the joined database."
											},
											"expectedViewGeneration": {
												"type": "integer",
												"minimum": 1,
												"maximum": 9007199254740991,
												"description": "Current view generation from get view. Rejects changes made against an older view definition."
											},
											"source": {
												"oneOf": [
													{
														"type": "object",
														"properties": {
															"type": {
																"type": "string",
																"const": "xldb",
																"description": "Always `xldb`"
															},
															"tableId": {
																"type": "string",
																"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$",
																"description": "ID of the XLDB table to join."
															},
															"rightColumnId": {
																"type": "string",
																"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$",
																"description": "ID of the joined table column to match against leftColumnId."
															},
															"selectedColumnIds": {
																"type": "array",
																"items": {
																	"type": "string",
																	"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"
																},
																"maxItems": 30,
																"minItems": 1,
																"uniqueItems": true,
																"description": "IDs of columns from the joined table to include in the view."
															}
														},
														"additionalProperties": false,
														"required": [
															"type",
															"tableId",
															"rightColumnId",
															"selectedColumnIds"
														]
													},
													{
														"type": "object",
														"properties": {
															"type": {
																"type": "string",
																"const": "collection",
																"description": "Always `collection`"
															},
															"collectionId": {
																"type": "string",
																"format": "uuid",
																"description": "ID of the Notion database collection to join."
															},
															"rightPropertyId": {
																"type": "string",
																"description": "Property ID in the Notion database to match against leftColumnId."
															},
															"selectedPropertyIds": {
																"type": "array",
																"items": {
																	"type": "string"
																},
																"maxItems": 100,
																"minItems": 1,
																"uniqueItems": true,
																"description": "Property IDs from the Notion database to include in the view."
															}
														},
														"additionalProperties": false,
														"required": [
															"type",
															"collectionId",
															"rightPropertyId",
															"selectedPropertyIds"
														]
													}
												],
												"description": "Database to join, the matching field, and the fields to include."
											},
											"joinId": {
												"type": "string",
												"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$",
												"description": "ID of the existing join to update."
											}
										},
										"additionalProperties": false,
										"required": [
											"viewId",
											"leftColumnId",
											"expectedViewGeneration",
											"source",
											"joinId"
										]
									},
									{
										"type": "object",
										"properties": {
											"viewId": {
												"type": "string",
												"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$",
												"description": "ID of the XLDB view to add a column to."
											},
											"name": {
												"type": "string",
												"description": "Name of the new view column."
											},
											"columnType": {
												"type": "string",
												"enum": [
													"text",
													"number",
													"checkbox",
													"date",
													"timestamp",
													"select",
													"multi_select",
													"person",
													"relation",
													"array_person",
													"array_relation"
												],
												"description": "One of: `text`, `number`, `checkbox`, `date`, `timestamp`, `select`, `multi_select`, `person`, `relation`, `array_person`, `array_relation`"
											},
											"expectedViewGeneration": {
												"type": "integer",
												"minimum": 1,
												"maximum": 9007199254740991,
												"description": "Current view generation from get view. Rejects changes made against an older view definition."
											},
											"config": {
												"type": "object",
												"properties": {
													"entity_type": {
														"type": "string",
														"const": "collection",
														"description": "Always `collection`"
													},
													"id": {
														"type": "string",
														"format": "uuid",
														"description": "ID of the Notion collection targeted by this relation column."
													}
												},
												"additionalProperties": false,
												"required": ["entity_type", "id"],
												"description": "Type-specific column settings, such as the target of a relation."
											}
										},
										"additionalProperties": false,
										"required": [
											"viewId",
											"name",
											"columnType",
											"expectedViewGeneration"
										]
									},
									{
										"type": "object",
										"properties": {
											"tableId": {
												"type": "string",
												"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$",
												"description": "ID of the XLDB table to add the column to."
											},
											"name": {
												"type": "string",
												"description": "Stable name used to identify the column or select option."
											},
											"title": {
												"type": "string",
												"description": "Display title of the column or select option."
											},
											"columnType": {
												"type": "string",
												"enum": [
													"text",
													"number",
													"checkbox",
													"date",
													"timestamp",
													"select",
													"multi_select",
													"person",
													"relation",
													"array_person",
													"array_relation"
												],
												"description": "One of: `text`, `number`, `checkbox`, `date`, `timestamp`, `select`, `multi_select`, `person`, `relation`, `array_person`, `array_relation`"
											},
											"config": {
												"type": "object",
												"properties": {
													"entity_type": {
														"type": "string",
														"const": "collection",
														"description": "Always `collection`"
													},
													"id": {
														"type": "string",
														"format": "uuid",
														"description": "ID of the Notion collection targeted by this relation column."
													}
												},
												"additionalProperties": false,
												"required": ["entity_type", "id"],
												"description": "Type-specific column settings, such as the target of a relation."
											},
											"mutability": {
												"type": "string",
												"enum": ["read_only", "read_write"],
												"description": "One of: `read_only`, `read_write`"
											},
											"selectOptions": {
												"type": "array",
												"items": {
													"type": "object",
													"properties": {
														"name": {
															"type": "string",
															"description": "Stable name used to identify the column or select option."
														},
														"title": {
															"type": "string",
															"description": "Display title of the column or select option."
														},
														"color": {
															"type": "string",
															"description": "Display color of the select option."
														}
													},
													"additionalProperties": false,
													"required": ["name", "title"]
												},
												"description": "Available options for select and multi-select columns."
											}
										},
										"additionalProperties": false,
										"required": ["tableId", "name", "title", "columnType"]
									},
									{
										"type": "object",
										"properties": {
											"tableId": {
												"type": "string",
												"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$",
												"description": "ID of the XL database table."
											},
											"columnId": {
												"type": "string",
												"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$",
												"description": "ID of the column to inspect."
											}
										},
										"additionalProperties": false,
										"required": ["tableId", "columnId"]
									},
									{
										"type": "object",
										"properties": {
											"tableId": {
												"type": "string",
												"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$",
												"description": "ID of the XL database table."
											},
											"columnId": {
												"type": "string",
												"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$",
												"description": "ID of the column to inspect."
											}
										},
										"additionalProperties": false,
										"required": ["tableId", "columnId"]
									},
									{
										"type": "object",
										"properties": {
											"tableId": {
												"type": "string",
												"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$",
												"description": "ID of the XL database table."
											},
											"columnId": {
												"type": "string",
												"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$",
												"description": "ID of the column to inspect."
											}
										},
										"additionalProperties": false,
										"required": ["tableId", "columnId"]
									},
									{
										"type": "object",
										"properties": {
											"tableId": {
												"type": "string",
												"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$",
												"description": "ID of the XL database table."
											}
										},
										"additionalProperties": false,
										"required": ["tableId"]
									},
									{
										"type": "object",
										"properties": {
											"tableId": {
												"type": "string",
												"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$",
												"description": "ID of the XLDB table to query."
											},
											"request": {
												"type": "object",
												"properties": {
													"explain": {
														"type": "string",
														"enum": ["plan", "analyze"],
														"description": "One of: `plan`, `analyze`"
													},
													"query": {
														"type": "object",
														"properties": {
															"search": {
																"type": "string",
																"description": "Text to search for in row values."
															},
															"filter": {
																"description": "XLDB filter expression to apply to rows."
															},
															"sorts": {
																"type": "array",
																"items": {
																	"type": "object",
																	"properties": {
																		"columnId": {
																			"type": "string",
																			"pattern": "^(?:[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}|(?:join|collection_join):[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}:[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})$",
																			"description": "ID of the column to sort by."
																		},
																		"direction": {
																			"type": "string",
																			"enum": ["asc", "desc"],
																			"description": "One of: `asc`, `desc`"
																		}
																	},
																	"additionalProperties": false,
																	"required": ["columnId", "direction"]
																},
																"description": "Columns to sort by, in priority order."
															},
															"rowIds": {
																"type": "array",
																"items": {
																	"type": "string",
																	"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"
																},
																"description": "Restrict the query to these row IDs."
															}
														},
														"additionalProperties": false,
														"description": "Filters, sorting, and search to apply to this query."
													},
													"columns": {
														"type": "array",
														"items": {
															"type": "string"
														},
														"description": "Column IDs to return. Omit to return all projected columns."
													},
													"limit": {
														"type": "number",
														"description": "Maximum number of rows to return in this page."
													},
													"cursor": {
														"type": "string",
														"description": "Opaque nextCursor from the previous response. Use with the same query."
													},
													"offset": {
														"type": "number",
														"description": "NextOffset from the previous response for queries using offset pagination."
													}
												},
												"additionalProperties": false,
												"description": "Query options, projected columns, and page position."
											}
										},
										"additionalProperties": false,
										"required": ["tableId", "request"]
									},
									{
										"type": "object",
										"properties": {
											"viewId": {
												"type": "string",
												"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$",
												"description": "ID of the XLDB view to query."
											},
											"request": {
												"type": "object",
												"properties": {
													"explain": {
														"type": "string",
														"enum": ["plan", "analyze"],
														"description": "One of: `plan`, `analyze`"
													},
													"query": {
														"type": "object",
														"properties": {
															"search": {
																"type": "string",
																"description": "Text to search for in row values."
															},
															"filter": {
																"description": "XLDB filter expression to apply to rows."
															},
															"sorts": {
																"type": "array",
																"items": {
																	"type": "object",
																	"properties": {
																		"columnId": {
																			"type": "string",
																			"pattern": "^(?:[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}|(?:join|collection_join):[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}:[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})$",
																			"description": "ID of the column to sort by."
																		},
																		"direction": {
																			"type": "string",
																			"enum": ["asc", "desc"],
																			"description": "One of: `asc`, `desc`"
																		}
																	},
																	"additionalProperties": false,
																	"required": ["columnId", "direction"]
																},
																"description": "Columns to sort by, in priority order."
															},
															"rowIds": {
																"type": "array",
																"items": {
																	"type": "string",
																	"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"
																},
																"description": "Restrict the query to these row IDs."
															}
														},
														"additionalProperties": false,
														"description": "Filters, sorting, and search to apply to this query."
													},
													"columns": {
														"type": "array",
														"items": {
															"type": "string"
														},
														"description": "Column IDs to return. Omit to return all projected columns."
													},
													"limit": {
														"type": "number",
														"description": "Maximum number of rows to return in this page."
													},
													"cursor": {
														"type": "string",
														"description": "Opaque nextCursor from the previous response. Use with the same query."
													},
													"offset": {
														"type": "number",
														"description": "NextOffset from the previous response for queries using offset pagination."
													}
												},
												"additionalProperties": false,
												"description": "Query options, projected columns, and page position."
											}
										},
										"additionalProperties": false,
										"required": ["viewId", "request"]
									},
									{
										"type": "object",
										"properties": {
											"viewId": {
												"type": "string",
												"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$",
												"description": "ID of the XL database view to read."
											}
										},
										"additionalProperties": false,
										"required": ["viewId"]
									},
									{
										"type": "object",
										"properties": {
											"viewId": {
												"type": "string",
												"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$",
												"description": "ID of the XLDB view to disconnect from its Notion database."
											},
											"collectionId": {
												"type": "string",
												"format": "uuid",
												"description": "Connected Notion database ID. Retain this ID when retrying a detach that stopped partway through."
											}
										},
										"additionalProperties": false,
										"required": ["viewId"]
									},
									{
										"type": "object",
										"properties": {
											"tableId": {
												"type": "string",
												"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$",
												"description": "ID of the XLDB table to write rows to."
											},
											"operations": {
												"type": "array",
												"items": {
													"type": "object",
													"properties": {
														"type": {
															"type": "string",
															"const": "upsert",
															"description": "Always `upsert`"
														},
														"key": {
															"type": "object",
															"additionalProperties": true,
															"description": "Column names and values that uniquely identify the row."
														},
														"values": {
															"type": "object",
															"additionalProperties": true,
															"description": "Column names and values to insert or update."
														}
													},
													"additionalProperties": false,
													"required": ["type", "key", "values"]
												},
												"maxItems": 1000,
												"minItems": 1,
												"description": "Row upserts to apply. Each key must match a unique constraint."
											}
										},
										"additionalProperties": false,
										"required": ["tableId", "operations"]
									},
									{
										"type": "object",
										"properties": {
											"table": {
												"type": "object",
												"properties": {
													"name": {
														"type": "string",
														"description": "Stable name of the table or column."
													},
													"title": {
														"type": "string",
														"description": "Display title of the table or column."
													},
													"schema": {
														"type": "object",
														"properties": {
															"columns": {
																"type": "array",
																"items": {
																	"type": "object",
																	"properties": {
																		"name": {
																			"type": "string",
																			"description": "Stable name of the table or column."
																		},
																		"title": {
																			"type": "string",
																			"description": "Display title of the table or column."
																		},
																		"type": {
																			"type": "string",
																			"enum": [
																				"text",
																				"number",
																				"checkbox",
																				"date",
																				"timestamp",
																				"select",
																				"multi_select",
																				"person",
																				"relation",
																				"array_person",
																				"array_relation"
																			],
																			"description": "One of: `text`, `number`, `checkbox`, `date`, `timestamp`, `select`, `multi_select`, `person`, `relation`, `array_person`, `array_relation`"
																		},
																		"config": {
																			"type": "object",
																			"properties": {
																				"entity_type": {
																					"type": "string",
																					"const": "collection",
																					"description": "Always `collection`"
																				},
																				"id": {
																					"type": "string",
																					"format": "uuid",
																					"description": "ID of the Notion collection targeted by this relation column."
																				}
																			},
																			"additionalProperties": false,
																			"required": ["entity_type", "id"],
																			"description": "Type-specific column settings, such as the target of a relation."
																		},
																		"mutability": {
																			"type": "string",
																			"enum": ["read_only", "read_write"],
																			"description": "One of: `read_only`, `read_write`"
																		},
																		"selectOptions": {
																			"type": "array",
																			"items": {
																				"type": "object",
																				"properties": {
																					"name": {
																						"type": "string",
																						"description": "Stable name used to identify the column or select option."
																					},
																					"title": {
																						"type": "string",
																						"description": "Display title of the column or select option."
																					},
																					"color": {
																						"type": "string",
																						"description": "Display color of the select option."
																					}
																				},
																				"additionalProperties": false,
																				"required": ["name", "title"]
																			},
																			"description": "Available options for select and multi-select columns."
																		}
																	},
																	"additionalProperties": false,
																	"required": ["name", "title", "type"]
																},
																"description": "Column definitions for the desired table."
															},
															"uniqueConstraints": {
																"type": "array",
																"items": {
																	"type": "object",
																	"properties": {
																		"columns": {
																			"type": "array",
																			"items": {
																				"type": "string"
																			},
																			"description": "Column names that together form this unique constraint."
																		}
																	},
																	"additionalProperties": false,
																	"required": ["columns"]
																},
																"description": "Groups of column names whose combined values must be unique."
															}
														},
														"additionalProperties": false,
														"required": ["columns", "uniqueConstraints"],
														"description": "Desired columns and unique constraints."
													}
												},
												"additionalProperties": false,
												"required": ["name", "title", "schema"],
												"description": "Desired table definition to plan or apply."
											},
											"expectedCurrentFingerprint": {
												"type": "string",
												"description": "Current schema fingerprint returned by the plan operation."
											},
											"planFingerprint": {
												"type": "string",
												"description": "Plan fingerprint returned by the plan operation. Apply the same desired definition."
											}
										},
										"additionalProperties": false,
										"required": [
											"table",
											"expectedCurrentFingerprint",
											"planFingerprint"
										]
									},
									{
										"type": "object",
										"properties": {
											"table": {
												"type": "object",
												"properties": {
													"name": {
														"type": "string",
														"description": "Stable name of the table or column."
													},
													"title": {
														"type": "string",
														"description": "Display title of the table or column."
													},
													"schema": {
														"type": "object",
														"properties": {
															"columns": {
																"type": "array",
																"items": {
																	"type": "object",
																	"properties": {
																		"name": {
																			"type": "string",
																			"description": "Stable name of the table or column."
																		},
																		"title": {
																			"type": "string",
																			"description": "Display title of the table or column."
																		},
																		"type": {
																			"type": "string",
																			"enum": [
																				"text",
																				"number",
																				"checkbox",
																				"date",
																				"timestamp",
																				"select",
																				"multi_select",
																				"person",
																				"relation",
																				"array_person",
																				"array_relation"
																			],
																			"description": "One of: `text`, `number`, `checkbox`, `date`, `timestamp`, `select`, `multi_select`, `person`, `relation`, `array_person`, `array_relation`"
																		},
																		"config": {
																			"type": "object",
																			"properties": {
																				"entity_type": {
																					"type": "string",
																					"const": "collection",
																					"description": "Always `collection`"
																				},
																				"id": {
																					"type": "string",
																					"format": "uuid",
																					"description": "ID of the Notion collection targeted by this relation column."
																				}
																			},
																			"additionalProperties": false,
																			"required": ["entity_type", "id"],
																			"description": "Type-specific column settings, such as the target of a relation."
																		},
																		"mutability": {
																			"type": "string",
																			"enum": ["read_only", "read_write"],
																			"description": "One of: `read_only`, `read_write`"
																		},
																		"selectOptions": {
																			"type": "array",
																			"items": {
																				"type": "object",
																				"properties": {
																					"name": {
																						"type": "string",
																						"description": "Stable name used to identify the column or select option."
																					},
																					"title": {
																						"type": "string",
																						"description": "Display title of the column or select option."
																					},
																					"color": {
																						"type": "string",
																						"description": "Display color of the select option."
																					}
																				},
																				"additionalProperties": false,
																				"required": ["name", "title"]
																			},
																			"description": "Available options for select and multi-select columns."
																		}
																	},
																	"additionalProperties": false,
																	"required": ["name", "title", "type"]
																},
																"description": "Column definitions for the desired table."
															},
															"uniqueConstraints": {
																"type": "array",
																"items": {
																	"type": "object",
																	"properties": {
																		"columns": {
																			"type": "array",
																			"items": {
																				"type": "string"
																			},
																			"description": "Column names that together form this unique constraint."
																		}
																	},
																	"additionalProperties": false,
																	"required": ["columns"]
																},
																"description": "Groups of column names whose combined values must be unique."
															}
														},
														"additionalProperties": false,
														"required": ["columns", "uniqueConstraints"],
														"description": "Desired columns and unique constraints."
													}
												},
												"additionalProperties": false,
												"required": ["name", "title", "schema"],
												"description": "Desired table definition to plan or apply."
											}
										},
										"additionalProperties": false,
										"required": ["table"]
									},
									{
										"type": "object",
										"properties": {
											"viewId": {
												"type": "string",
												"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$",
												"description": "ID of the XL database view to read."
											}
										},
										"additionalProperties": false,
										"required": ["viewId"]
									},
									{
										"type": "object",
										"properties": {
											"tableId": {
												"type": "string",
												"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$",
												"description": "ID of the XL database table."
											}
										},
										"additionalProperties": false,
										"required": ["tableId"]
									},
									{
										"type": "object",
										"properties": {
											"tableId": {
												"type": "string",
												"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$",
												"description": "ID of the XL database table."
											}
										},
										"additionalProperties": false,
										"required": ["tableId"]
									},
									{
										"type": "object",
										"properties": {},
										"additionalProperties": false
									},
									{
										"type": "object",
										"properties": {
											"cursor": {
												"type": "string",
												"pattern": "^[A-Za-z0-9_-]{1,4096}$",
												"description": "Opaque pagination cursor from the previous response's nextCursor."
											}
										},
										"additionalProperties": false
									},
									{
										"type": "object",
										"properties": {
											"name": {
												"type": "string",
												"description": "A human-readable name for the workspace bookmark."
											},
											"timestamp": {
												"oneOf": [
													{
														"type": "string"
													},
													{
														"type": "number"
													}
												],
												"description": "The point in time where this bookmark sits. Use an ISO 8601 timestamp or epoch milliseconds; defaults to the current time when omitted."
											}
										},
										"additionalProperties": false
									},
									{
										"type": "object",
										"properties": {},
										"additionalProperties": false
									},
									{
										"type": "object",
										"properties": {
											"timestamp": {
												"oneOf": [
													{
														"type": "string"
													},
													{
														"type": "number"
													}
												],
												"description": "The point in time of the bookmark to delete. Use an ISO 8601 timestamp or epoch milliseconds."
											}
										},
										"additionalProperties": false,
										"required": ["timestamp"]
									},
									{
										"type": "object",
										"properties": {},
										"additionalProperties": false
									},
									{
										"type": "object",
										"required": ["tabs"],
										"additionalProperties": false,
										"properties": {
											"tabs": {
												"type": "array",
												"minItems": 1,
												"description": "The complete desired ordered tab list. Preserve an existing id to update it, omit id to create a tab, and omit an existing tab to remove it.",
												"items": {
													"type": "object",
													"required": ["name", "shortcuts", "sections"],
													"additionalProperties": false,
													"properties": {
														"id": {
															"type": "string",
															"description": "An id returned by get_sidebar_tabs. Omit only for a new tab."
														},
														"name": {
															"type": "string",
															"description": "The tab label shown in the sidebar."
														},
														"icon": {
															"type": "string",
															"description": "A Notion icon name or picker alias. Existing tabs preserve their icon when omitted; new tabs default to circle-dashed."
														},
														"shortcuts": {
															"type": "array",
															"uniqueItems": true,
															"description": "Ordered shortcuts for the tab. Use ids or object forms from the shortcutCatalog returned by get_sidebar_tabs.",
															"items": {
																"oneOf": [
																	{
																		"type": "string",
																		"enum": [
																			"agent_companion",
																			"new_page",
																			"new_chat",
																			"new_meeting_note",
																			"new_database",
																			"new_agent",
																			"library",
																			"calendar",
																			"agents",
																			"skills",
																			"meeting_notes",
																			"tasks",
																			"marketplace"
																		]
																	},
																	{
																		"type": "object",
																		"required": ["type"],
																		"additionalProperties": false,
																		"properties": {
																			"type": {
																				"type": "string",
																				"enum": ["new_page"],
																				"description": "The new page item type."
																			},
																			"id": {
																				"type": "string",
																				"description": "Occurrence id from get_sidebar_tabs. Omit for a new shortcut."
																			},
																			"dataSourceUrl": {
																				"type": "string",
																				"description": "The collection:// URL of the destination data source. Use at most one of dataSourceUrl and pageUrl."
																			},
																			"pageUrl": {
																				"type": "string",
																				"description": "The Notion URL of a page to create subpages in. Use at most one of dataSourceUrl and pageUrl."
																			},
																			"viewId": {
																				"type": "string",
																				"format": "uuid",
																				"description": "An optional database view id in dataSourceUrl. New pages are created in that view."
																			},
																			"templateUrl": {
																				"type": "string",
																				"description": "An optional database template page URL that belongs to dataSourceUrl, or \"empty\" to create blank pages without the default template."
																			},
																			"label": {
																				"type": "string",
																				"description": "An optional custom label, limited to 150 characters. Prefer \"New {singular noun}\" when the database's created object is clear, for example \"New task\" for Tasks. Otherwise omit it to use the product default."
																			},
																			"icon": {
																				"type": "string",
																				"maxLength": 2000,
																				"description": "An optional custom icon override using tool-docs://notion/pages/notion-icons.md or a single emoji. Omit it to use the database icon, or the generic compose icon when the shortcut has no database. Set it only when the user requests an override or there is a clear semantic reason."
																			},
																			"openIn": {
																				"type": "string",
																				"enum": [
																					"side_peek",
																					"center_peek",
																					"full_page"
																				],
																				"description": "How pages opened from this item appear. Omit it to use the product default."
																			}
																		}
																	},
																	{
																		"type": "object",
																		"required": ["type", "pageUrl"],
																		"additionalProperties": false,
																		"properties": {
																			"type": {
																				"type": "string",
																				"enum": ["page_link"],
																				"description": "The page link item type."
																			},
																			"id": {
																				"type": "string",
																				"description": "Occurrence id from get_sidebar_tabs. Omit for a new shortcut."
																			},
																			"pageUrl": {
																				"type": "string",
																				"description": "The Notion URL of the page or database the shortcut navigates to. The shortcut always shows that target's own title and icon."
																			},
																			"viewId": {
																				"type": "string",
																				"format": "uuid",
																				"description": "An optional database view id. It must identify a view parented by the database in pageUrl. Omit it to open the user's most recently visited view."
																			},
																			"openIn": {
																				"type": "string",
																				"enum": [
																					"side_peek",
																					"center_peek",
																					"full_page"
																				],
																				"description": "How pages opened from this item appear. Omit it to use the product default."
																			}
																		}
																	},
																	{
																		"type": "object",
																		"required": ["type", "workflowId"],
																		"additionalProperties": false,
																		"properties": {
																			"type": {
																				"type": "string",
																				"enum": ["agent"],
																				"description": "The agent item type."
																			},
																			"id": {
																				"type": "string",
																				"description": "Occurrence id from get_sidebar_tabs. Omit for a new shortcut."
																			},
																			"workflowId": {
																				"type": "string",
																				"format": "uuid",
																				"description": "The id of the custom agent the shortcut navigates to."
																			}
																		}
																	},
																	{
																		"type": "object",
																		"required": ["type", "threadId"],
																		"additionalProperties": false,
																		"properties": {
																			"type": {
																				"type": "string",
																				"enum": ["chat_thread"],
																				"description": "The chat thread item type."
																			},
																			"id": {
																				"type": "string",
																				"description": "Occurrence id from get_sidebar_tabs. Omit for a new shortcut."
																			},
																			"threadId": {
																				"type": "string",
																				"format": "uuid",
																				"description": "The id of the AI chat thread the shortcut opens."
																			}
																		}
																	},
																	{
																		"type": "object",
																		"required": ["type"],
																		"additionalProperties": false,
																		"properties": {
																			"type": {
																				"type": "string",
																				"enum": ["chat_dashboard"],
																				"description": "The chat dashboard item type."
																			},
																			"id": {
																				"type": "string",
																				"description": "Occurrence id from get_sidebar_tabs. Omit for a new shortcut."
																			}
																		}
																	},
																	{
																		"type": "object",
																		"required": ["type"],
																		"additionalProperties": false,
																		"properties": {
																			"type": {
																				"type": "string",
																				"enum": ["settings"],
																				"description": "The settings item type."
																			},
																			"id": {
																				"type": "string",
																				"description": "Occurrence id from get_sidebar_tabs. Omit for a new shortcut."
																			},
																			"panel": {
																				"type": "string",
																				"enum": [
																					"profile",
																					"user_settings",
																					"notifications",
																					"mail_and_calendar",
																					"offline",
																					"settings",
																					"members",
																					"plans",
																					"billing",
																					"ai_usage_dashboard",
																					"subscription",
																					"security",
																					"identity_provisioning",
																					"admin_content_search",
																					"integrations",
																					"integrations_mcp",
																					"credentials",
																					"imports",
																					"teams",
																					"audit_log",
																					"analytics",
																					"public_pages",
																					"custom_emoji",
																					"verified_pages",
																					"requests",
																					"ai",
																					"meeting_notes",
																					"workers",
																					"developer",
																					"experiments",
																					"performance_toolbar",
																					"client_preview",
																					"personalization",
																					"user_similarity_scores",
																					"collection_debug",
																					"offline_mode_debug",
																					"design_previews",
																					"mobile_native"
																				],
																				"description": "An optional settings panel id. Omit it to open Settings without selecting a specific panel."
																			}
																		}
																	}
																]
															}
														},
														"sections": {
															"type": "array",
															"uniqueItems": true,
															"description": "Ordered sections for the tab. Use ids or object forms from the sectionCatalog returned by get_sidebar_tabs.",
															"items": {
																"oneOf": [
																	{
																		"type": "string",
																		"enum": [
																			"favorites",
																			"teamspaces",
																			"shared",
																			"private",
																			"workspace",
																			"agents",
																			"chats",
																			"notion_apps",
																			"meetings_today",
																			"recents",
																			"myMeetings",
																			"developer",
																			"pinned_chats",
																			"unread_chats"
																		]
																	},
																	{
																		"type": "object",
																		"required": ["type"],
																		"additionalProperties": false,
																		"properties": {
																			"type": {
																				"type": "string",
																				"enum": [
																					"favorites",
																					"teamspaces",
																					"shared",
																					"private",
																					"workspace",
																					"agents",
																					"chats",
																					"notion_apps",
																					"meetings_today",
																					"recents",
																					"myMeetings",
																					"developer",
																					"pinned_chats",
																					"unread_chats"
																				],
																				"description": "The built-in section id."
																			},
																			"itemLimit": {
																				"type": "integer",
																				"minimum": 1,
																				"maximum": 100,
																				"description": "Maximum visible items for this tab's occurrence of the section. Use the string form instead to use the workspace default."
																			}
																		}
																	},
																	{
																		"type": "object",
																		"required": ["type", "viewUrl"],
																		"additionalProperties": false,
																		"properties": {
																			"type": {
																				"type": "string",
																				"enum": ["database_view"],
																				"description": "The database view section type."
																			},
																			"id": {
																				"type": "string",
																				"description": "Stable occurrence id returned by get_sidebar_tabs. Omit only when adding a new database view section."
																			},
																			"viewUrl": {
																				"type": "string",
																				"description": "An explicit view:// URL or Notion URL containing a v= view id. A database page URL without a view id is ambiguous and invalid."
																			},
																			"templateUrl": {
																				"type": "string",
																				"description": "An optional template page URL in the view's data source used by the section's New button, or \"empty\" to create blank pages without the default template."
																			},
																			"itemLimit": {
																				"type": "integer",
																				"minimum": 1,
																				"maximum": 100,
																				"description": "Maximum visible rows. Defaults to 5 when omitted."
																			},
																			"hidePageIcon": {
																				"type": "boolean",
																				"description": "Whether to hide page icons for rows in this section. Defaults to false."
																			},
																			"customName": {
																				"type": "string",
																				"maxLength": 150,
																				"description": "An optional sidebar-only name that replaces the underlying view name in this section's label. Omit it to use the view name."
																			},
																			"openIn": {
																				"type": "string",
																				"enum": [
																					"side_peek",
																					"center_peek",
																					"full_page"
																				],
																				"description": "How pages opened from this section appear. Omit it to use the database view's setting."
																			}
																		}
																	},
																	{
																		"type": "object",
																		"required": ["type", "teamspaceUrl"],
																		"additionalProperties": false,
																		"properties": {
																			"type": {
																				"type": "string",
																				"enum": ["teamspace"],
																				"description": "The teamspace item type."
																			},
																			"teamspaceUrl": {
																				"type": "string",
																				"description": "The teamspace:// URL or id of a teamspace the current user has joined."
																			}
																		}
																	},
																	{
																		"type": "string",
																		"enum": ["meeting_databases"]
																	}
																]
															}
														}
													}
												}
											}
										}
									},
									{
										"type": "object",
										"properties": {
											"page_id": {
												"type": "string",
												"description": "The ID or URL of the Notion page. Accepts a notion.so URL, a raw UUID with or without dashes, or a page:// URI."
											},
											"level": {
												"type": "string",
												"enum": ["all", "important", "comments", "none"],
												"description": "How much the calling user wants to hear about this page. \"all\" notifies on every comment and property change, and is accepted for pages inside any database. \"important\" notifies on every comment plus changes to Status, Assignee, and Due dates, and is accepted for pages inside a Tasks or Projects database. \"comments\" notifies on every comment and no property changes, and is accepted for pages that are not inside a Tasks or Projects database. \"none\" notifies only on replies to the user and @mentions of the user, and is accepted for any page."
											}
										},
										"additionalProperties": false,
										"required": ["page_id", "level"]
									},
									{
										"properties": {
											"onlyAccountEmails": {
												"description": "Return only accounts linked to these email addresses. Useful to get calendars from a work account only for example. Do not specify if you are interested in getting the whole picture of someone's agenda across work and personal accounts.",
												"type": "array",
												"items": {
													"type": "string"
												}
											}
										},
										"type": "object",
										"additionalProperties": false
									},
									{
										"description": "Timeframe defined by timeMin and timeMax must not exceed a month",
										"required": ["timeMin", "timeMax", "timeZone"],
										"properties": {
											"timeMin": {
												"format": "date-time",
												"type": "string",
												"description": "Start of the time range, as an ISO 8601 date-time."
											},
											"timeMax": {
												"format": "date-time",
												"type": "string",
												"description": "End of the time range, as an ISO 8601 date-time."
											},
											"timeZone": {
												"description": "Date-times of returned events will be expressed in this time-zone",
												"type": "string"
											},
											"includeDeclinedInvites": {
												"description": "Whether to include event invites the user has declined",
												"type": ["boolean", "null"]
											}
										},
										"type": "object",
										"additionalProperties": false
									},
									{
										"description": "Timeframe defined by timeMin and timeMax must not exceed a month",
										"required": [
											"participantEmails",
											"durationMinutes",
											"timeMin",
											"timeMax",
											"timeZone"
										],
										"properties": {
											"participantEmails": {
												"description": "Individual participant or group email addresses to find time with. Resolvable groups are expanded into their members.",
												"minItems": 1,
												"type": "array",
												"items": {
													"type": "string"
												}
											},
											"durationMinutes": {
												"description": "The duration of the meeting in minutes",
												"maximum": 9007199254740991,
												"exclusiveMinimum": 0,
												"type": "integer"
											},
											"timeMin": {
												"format": "date-time",
												"type": "string",
												"description": "Start of the time range to consider, as an ISO 8601 date-time."
											},
											"timeMax": {
												"format": "date-time",
												"type": "string",
												"description": "End of the time range to consider, as an ISO 8601 date-time."
											},
											"maxCount": {
												"description": "Maximum number of suggestions to return (default: 10)",
												"maximum": 50,
												"exclusiveMinimum": 0,
												"type": "integer"
											},
											"timeZone": {
												"description": "Date-times of returned events will be expressed in this time-zone",
												"type": "string"
											},
											"includeParticipantSchedules": {
												"description": "Whether to include participant event schedules in the response",
												"type": "boolean"
											}
										},
										"type": "object",
										"additionalProperties": false
									},
									{
										"description": "Timeframe defined by timeMin and timeMax must not exceed a month",
										"required": [
											"coworkerEmails",
											"timeMin",
											"timeMax",
											"timeZone"
										],
										"properties": {
											"coworkerEmails": {
												"description": "Emails of relevant coworkers",
												"type": "array",
												"items": {
													"type": "string"
												}
											},
											"timeMin": {
												"format": "date-time",
												"type": "string",
												"description": "Start of the time range, as an ISO 8601 date-time."
											},
											"timeMax": {
												"format": "date-time",
												"type": "string",
												"description": "End of the time range, as an ISO 8601 date-time."
											},
											"timeZone": {
												"description": "Date-times of returned events will be expressed in this time-zone",
												"type": "string"
											}
										},
										"type": "object",
										"additionalProperties": false
									},
									{
										"required": ["timeSlots", "minCapacity", "timeZone"],
										"properties": {
											"timeSlots": {
												"description": "Specific time slots to check. Returns available resources for each time slot independently.",
												"minItems": 1,
												"type": "array",
												"items": {
													"required": ["startAt", "endAt"],
													"properties": {
														"startAt": {
															"format": "date-time",
															"type": "string",
															"description": "Start of the time slot to check, as an ISO 8601 date-time."
														},
														"endAt": {
															"format": "date-time",
															"type": "string",
															"description": "End of the time slot to check, as an ISO 8601 date-time."
														}
													},
													"type": "object",
													"additionalProperties": false
												}
											},
											"minCapacity": {
												"description": "Minimum room capacity (number of people). MUST include the meeting organizer/user themselves in the count. For a 1-on-1, pass 2. For a meeting with N invitees besides the user, pass N+1.",
												"maximum": 9007199254740991,
												"exclusiveMinimum": 0,
												"type": "integer"
											},
											"maxCount": {
												"description": "Maximum number of resources to return per time slot (default: 20, max: 40)",
												"maximum": 40,
												"default": 20,
												"exclusiveMinimum": 0,
												"type": "integer"
											},
											"ignoreWorkingLocation": {
												"description": "If true, do not narrow rooms to the user's working-location building for this day. Set this when the user is explicitly asking about rooms in a different office (e.g. for a visiting team).",
												"type": "boolean"
											},
											"timeZone": {
												"description": "Date-times of returned events will be expressed in this time-zone",
												"type": "string"
											},
											"calendar": {
												"description": "Calendar of the event the rooms will be attached to. Rooms are scoped to a single account.",
												"required": ["accountId", "calendarId"],
												"properties": {
													"accountId": {
														"type": "string",
														"description": "Account that owns the target calendar."
													},
													"calendarId": {
														"type": "string",
														"description": "Target calendar identifier within the account."
													}
												},
												"type": "object",
												"additionalProperties": false
											}
										},
										"type": "object",
										"additionalProperties": false
									},
									{
										"properties": {
											"queries": {
												"description": "Optional search queries to filter contacts by name or email. Results matching any query are included.",
												"maxItems": 50,
												"type": "array",
												"items": {
													"type": "string"
												}
											}
										},
										"type": "object",
										"additionalProperties": false
									},
									{
										"properties": {
											"type": {
												"description": "Return only scheduling links of this type",
												"enum": ["singleUse", "multiUse", "recurring"],
												"type": "string"
											}
										},
										"type": "object",
										"additionalProperties": false
									},
									{
										"required": ["timeZone", "events"],
										"properties": {
											"timeZone": {
												"description": "Date-times of returned events will be expressed in this time-zone",
												"type": "string"
											},
											"events": {
												"maxItems": 50,
												"type": "array",
												"items": {
													"required": ["summary", "period"],
													"properties": {
														"summary": {
															"minLength": 1,
															"type": "string",
															"description": "Title of the event."
														},
														"description": {
															"type": "string",
															"description": "Description of the event."
														},
														"location": {
															"description": "Physical location where the event takes place, or remote conference link/info.",
															"type": "string"
														},
														"recurrenceRules": {
															"description": "Recurrence rules in RRULE format (e.g., ['RRULE:FREQ=WEEKLY;COUNT=10']). Can also include EXDATE for exception dates (e.g., ['RRULE:FREQ=WEEKLY;COUNT=10', 'EXDATE:2026-03-24T13:00:00']).",
															"type": "array",
															"items": {
																"type": "string"
															}
														},
														"period": {
															"description": "When the event is happening",
															"oneOf": [
																{
																	"description": "A date-only period, denoting an all-day event. Property `type` must be set to the exact string \"DATE\"",
																	"required": ["type", "start", "end"],
																	"properties": {
																		"type": {
																			"const": "DATE",
																			"type": "string",
																			"description": "Whether the event period uses all-day dates or date-times."
																		},
																		"start": {
																			"required": ["date"],
																			"properties": {
																				"date": {
																					"description": "Date in ISO 8601 format (no time)",
																					"format": "date",
																					"type": "string"
																				}
																			},
																			"type": "object",
																			"additionalProperties": false,
																			"description": "Start of the event."
																		},
																		"end": {
																			"required": ["date"],
																			"properties": {
																				"date": {
																					"description": "Date in ISO 8601 format (no time)",
																					"format": "date",
																					"type": "string"
																				}
																			},
																			"type": "object",
																			"additionalProperties": false,
																			"description": "End of the event."
																		}
																	},
																	"type": "object",
																	"additionalProperties": false
																},
																{
																	"description": "A date-time period, denoting an time-bound event (can span multiple days). Property `type` must be set to the exact string \"DATE_TIME\"",
																	"required": ["type", "start", "end"],
																	"properties": {
																		"type": {
																			"const": "DATE_TIME",
																			"type": "string",
																			"description": "Whether the event period uses all-day dates or date-times."
																		},
																		"start": {
																			"required": ["dateTime"],
																			"example": {
																				"dateTime": "2025-04-30T12:09:00-05:00",
																				"timeZone": "America/Chicago"
																			},
																			"properties": {
																				"dateTime": {
																					"description": "Date-time in ISO 8601 format, in UTC (ending with Z), or with TZ offset, or without TZ offset if `timeZone` is specified in which case will be interpreted as local time in that timeZone",
																					"type": "string"
																				},
																				"timeZone": {
																					"type": "string",
																					"description": "IANA time zone for the event start date-time."
																				}
																			},
																			"type": "object",
																			"additionalProperties": false,
																			"description": "Start of the event."
																		},
																		"end": {
																			"required": ["dateTime"],
																			"example": {
																				"dateTime": "2025-04-30T12:09:00-05:00",
																				"timeZone": "America/Chicago"
																			},
																			"properties": {
																				"dateTime": {
																					"description": "Date-time in ISO 8601 format, in UTC (ending with Z), or with TZ offset, or without TZ offset if `timeZone` is specified in which case will be interpreted as local time in that timeZone",
																					"type": "string"
																				},
																				"timeZone": {
																					"type": "string",
																					"description": "IANA time zone for the event end date-time."
																				}
																			},
																			"type": "object",
																			"additionalProperties": false,
																			"description": "End of the event."
																		}
																	},
																	"type": "object",
																	"additionalProperties": false
																}
															],
															"type": "object"
														},
														"attendees": {
															"description": "Attendees to invite to the event",
															"type": "array",
															"items": {
																"required": ["email"],
																"properties": {
																	"email": {
																		"type": "string",
																		"description": "Email address of the attendee."
																	},
																	"displayName": {
																		"description": "Totally optional, provide only if you are sure of the attendee's name",
																		"type": "string"
																	},
																	"isOptional": {
																		"description": "Set only if the user was explicit about an attendee not being required",
																		"type": "boolean"
																	}
																},
																"type": "object",
																"additionalProperties": false
															}
														},
														"resources": {
															"description": "Resources (such as rooms) to invite to the event. Must be from the same account as `event.calendar`.",
															"type": "array",
															"items": {
																"required": ["isOptional"],
																"properties": {
																	"email": {
																		"type": "string",
																		"description": "Email address of the resource."
																	},
																	"displayName": {
																		"type": "string",
																		"description": "Display name of the resource."
																	},
																	"isOptional": {
																		"description": "Set only if the user was explicit about a resource not being required",
																		"type": "boolean"
																	}
																},
																"type": "object",
																"additionalProperties": false
															}
														},
														"calendar": {
															"description": "Will create the event on the primary, default calendar if not specified.",
															"required": ["accountId", "calendarId"],
															"properties": {
																"accountId": {
																	"type": "string",
																	"description": "Account that owns the target calendar."
																},
																"calendarId": {
																	"type": "string",
																	"description": "Target calendar identifier within the account."
																}
															},
															"type": "object",
															"additionalProperties": false
														},
														"disableConferencing": {
															"description": "Whether to disable conferencing for this event.",
															"type": "boolean"
														}
													},
													"type": "object",
													"additionalProperties": false
												},
												"description": "Events to create."
											}
										},
										"type": "object",
										"additionalProperties": false
									},
									{
										"required": ["timeZone", "updates"],
										"properties": {
											"timeZone": {
												"description": "Date-times of returned events will be expressed in this time-zone",
												"type": "string"
											},
											"updates": {
												"maxItems": 50,
												"type": "array",
												"items": {
													"oneOf": [
														{
															"required": ["updateType", "event", "rsvp"],
															"properties": {
																"updateType": {
																	"description": "Must be set to the exact string \"RSVP\" in upper case.",
																	"const": "RSVP",
																	"type": "string"
																},
																"event": {
																	"required": ["calendar", "eventId"],
																	"properties": {
																		"calendar": {
																			"required": ["accountId", "calendarId"],
																			"properties": {
																				"accountId": {
																					"type": "string",
																					"description": "Account that owns the event calendar."
																				},
																				"calendarId": {
																					"type": "string",
																					"description": "Event calendar identifier within the account."
																				}
																			},
																			"type": "object",
																			"additionalProperties": false,
																			"description": "Calendar containing the event."
																		},
																		"eventId": {
																			"type": "string",
																			"description": "Identifier of the event to update."
																		},
																		"eventSummary": {
																			"description": "Optional summary of the event, used by agent UI.",
																			"type": "string"
																		}
																	},
																	"type": "object",
																	"additionalProperties": false,
																	"description": "Event to update."
																},
																"rsvp": {
																	"required": ["responseStatus"],
																	"properties": {
																		"responseStatus": {
																			"description": "The calendar user's RSVP status",
																			"enum": [
																				"needsAction",
																				"accepted",
																				"declined",
																				"tentative"
																			],
																			"type": "string"
																		},
																		"comment": {
																			"type": "string",
																			"description": "Optional comment accompanying the RSVP."
																		}
																	},
																	"type": "object",
																	"additionalProperties": false,
																	"description": "RSVP update to apply to the event."
																}
															},
															"type": "object",
															"additionalProperties": false
														},
														{
															"required": ["updateType", "event", "update"],
															"properties": {
																"updateType": {
																	"description": "Must be set to the exact string \"UPDATE\" in upper case.",
																	"const": "UPDATE",
																	"type": "string"
																},
																"event": {
																	"required": ["calendar", "eventId"],
																	"properties": {
																		"calendar": {
																			"required": ["accountId", "calendarId"],
																			"properties": {
																				"accountId": {
																					"type": "string",
																					"description": "Account that owns the event calendar."
																				},
																				"calendarId": {
																					"type": "string",
																					"description": "Event calendar identifier within the account."
																				}
																			},
																			"type": "object",
																			"additionalProperties": false,
																			"description": "Calendar containing the event."
																		},
																		"eventId": {
																			"type": "string",
																			"description": "Identifier of the event to update."
																		},
																		"eventSummary": {
																			"description": "Optional summary of the event, used by agent UI.",
																			"type": "string"
																		}
																	},
																	"type": "object",
																	"additionalProperties": false,
																	"description": "Event to update."
																},
																"update": {
																	"properties": {
																		"summary": {
																			"minLength": 1,
																			"type": "string",
																			"description": "Updated title of the event."
																		},
																		"description": {
																			"type": "string",
																			"description": "Updated description of the event."
																		},
																		"location": {
																			"description": "Physical location where the event takes place, or remote conference link/info.",
																			"type": "string"
																		},
																		"recurrenceRules": {
																			"description": "Recurrence rules in RRULE format (e.g., ['RRULE:FREQ=WEEKLY;COUNT=10']). Can also include EXDATE for exception dates (e.g., ['RRULE:FREQ=WEEKLY;COUNT=10', 'EXDATE:2026-03-24T13:00:00']).",
																			"type": "array",
																			"items": {
																				"type": "string"
																			}
																		},
																		"period": {
																			"description": "When the event is happening",
																			"oneOf": [
																				{
																					"description": "A date-only period, denoting an all-day event. Property `type` must be set to the exact string \"DATE\"",
																					"required": ["type", "start", "end"],
																					"properties": {
																						"type": {
																							"const": "DATE",
																							"type": "string",
																							"description": "Whether the updated event period uses all-day dates or date-times."
																						},
																						"start": {
																							"required": ["date"],
																							"properties": {
																								"date": {
																									"description": "Date in ISO 8601 format (no time)",
																									"format": "date",
																									"type": "string"
																								}
																							},
																							"type": "object",
																							"additionalProperties": false,
																							"description": "Updated start of the event."
																						},
																						"end": {
																							"required": ["date"],
																							"properties": {
																								"date": {
																									"description": "Date in ISO 8601 format (no time)",
																									"format": "date",
																									"type": "string"
																								}
																							},
																							"type": "object",
																							"additionalProperties": false,
																							"description": "Updated end of the event."
																						}
																					},
																					"type": "object",
																					"additionalProperties": false
																				},
																				{
																					"description": "A date-time period, denoting an time-bound event (can span multiple days). Property `type` must be set to the exact string \"DATE_TIME\"",
																					"required": ["type", "start", "end"],
																					"properties": {
																						"type": {
																							"const": "DATE_TIME",
																							"type": "string",
																							"description": "Whether the updated event period uses all-day dates or date-times."
																						},
																						"start": {
																							"required": ["dateTime"],
																							"example": {
																								"dateTime": "2025-04-30T12:09:00-05:00",
																								"timeZone": "America/Chicago"
																							},
																							"properties": {
																								"dateTime": {
																									"description": "Date-time in ISO 8601 format, in UTC (ending with Z), or with TZ offset, or without TZ offset if `timeZone` is specified in which case will be interpreted as local time in that timeZone",
																									"type": "string"
																								},
																								"timeZone": {
																									"type": "string",
																									"description": "IANA time zone for the updated event start date-time."
																								}
																							},
																							"type": "object",
																							"additionalProperties": false,
																							"description": "Updated start of the event."
																						},
																						"end": {
																							"required": ["dateTime"],
																							"example": {
																								"dateTime": "2025-04-30T12:09:00-05:00",
																								"timeZone": "America/Chicago"
																							},
																							"properties": {
																								"dateTime": {
																									"description": "Date-time in ISO 8601 format, in UTC (ending with Z), or with TZ offset, or without TZ offset if `timeZone` is specified in which case will be interpreted as local time in that timeZone",
																									"type": "string"
																								},
																								"timeZone": {
																									"type": "string",
																									"description": "IANA time zone for the updated event end date-time."
																								}
																							},
																							"type": "object",
																							"additionalProperties": false,
																							"description": "Updated end of the event."
																						}
																					},
																					"type": "object",
																					"additionalProperties": false
																				}
																			],
																			"type": "object"
																		},
																		"attendees": {
																			"description": "Updated list of attendees for the event",
																			"type": "array",
																			"items": {
																				"required": ["email"],
																				"properties": {
																					"email": {
																						"type": "string",
																						"description": "Email address of the attendee."
																					},
																					"displayName": {
																						"description": "Totally optional, provide only if you are sure of the attendee's name",
																						"type": "string"
																					},
																					"isOptional": {
																						"description": "Set only if the user was explicit about an attendee not being required",
																						"type": "boolean"
																					}
																				},
																				"type": "object",
																				"additionalProperties": false
																			}
																		},
																		"resources": {
																			"description": "Updated list of resources (such as rooms) for the event. Must be from the same account as `event.calendar`.",
																			"type": "array",
																			"items": {
																				"required": ["isOptional"],
																				"properties": {
																					"email": {
																						"type": "string",
																						"description": "Email address of the resource."
																					},
																					"displayName": {
																						"type": "string",
																						"description": "Display name of the resource."
																					},
																					"isOptional": {
																						"description": "Set only if the user was explicit about a resource not being required",
																						"type": "boolean"
																					}
																				},
																				"type": "object",
																				"additionalProperties": false
																			}
																		},
																		"addConferencing": {
																			"description": "Whether to add conferencing to this event. Only adds conferencing if the event has attendees and doesn't already have conferencing.",
																			"type": "boolean"
																		}
																	},
																	"type": "object",
																	"additionalProperties": false,
																	"description": "Changes to apply to the event."
																}
															},
															"type": "object",
															"additionalProperties": false
														}
													],
													"type": "object"
												},
												"description": "Event updates to apply."
											}
										},
										"type": "object",
										"additionalProperties": false
									},
									{
										"required": ["events"],
										"properties": {
											"events": {
												"maxItems": 50,
												"type": "array",
												"items": {
													"required": ["calendar", "eventId"],
													"properties": {
														"calendar": {
															"required": ["accountId", "calendarId"],
															"properties": {
																"accountId": {
																	"type": "string",
																	"description": "Account that owns the event calendar."
																},
																"calendarId": {
																	"type": "string",
																	"description": "Event calendar identifier within the account."
																}
															},
															"type": "object",
															"additionalProperties": false,
															"description": "Calendar containing the event."
														},
														"eventId": {
															"type": "string",
															"description": "Identifier of the event to cancel."
														},
														"eventSummary": {
															"description": "Optional summary of the event, used by agent UI.",
															"type": "string"
														}
													},
													"type": "object",
													"additionalProperties": false
												},
												"description": "Events to cancel."
											}
										},
										"type": "object",
										"additionalProperties": false
									},
									{
										"required": ["bookingCalendar", "duration", "timeRanges"],
										"properties": {
											"bookingCalendar": {
												"description": "Calendar where meetings booked through this scheduling link will be created",
												"required": ["accountId", "calendarId"],
												"properties": {
													"accountId": {
														"type": "string",
														"description": "Account that owns the booking calendar."
													},
													"calendarId": {
														"type": "string",
														"description": "Booking calendar identifier within the account."
													}
												},
												"type": "object",
												"additionalProperties": false
											},
											"conflictCalendars": {
												"description": "Calendars to check for conflicts when determining available time slots. Events on these calendars will block booking availability.",
												"type": "array",
												"items": {
													"required": ["accountId", "calendarId"],
													"properties": {
														"accountId": {
															"type": "string",
															"description": "Account that owns the conflict calendar."
														},
														"calendarId": {
															"type": "string",
															"description": "Conflict calendar identifier within the account."
														}
													},
													"type": "object",
													"additionalProperties": false
												}
											},
											"title": {
												"description": "Title of the scheduling link, shown on the booking page",
												"type": "string"
											},
											"description": {
												"description": "Description shown to invitees on the booking page",
												"type": "string"
											},
											"duration": {
												"description": "Meeting duration in minutes",
												"minimum": 5,
												"maximum": 9007199254740991,
												"type": "integer"
											},
											"timeRanges": {
												"description": "Time windows when the user is available for bookings",
												"minItems": 1,
												"type": "array",
												"items": {
													"required": ["startDate", "endDate"],
													"properties": {
														"startDate": {
															"description": "Start of availability window in ISO 8601 format with timezone offset, e.g. '2024-08-22T09:00:00-04:00'",
															"type": "string"
														},
														"endDate": {
															"description": "End of availability window in ISO 8601 format with timezone offset, e.g. '2024-08-22T17:00:00-04:00'",
															"type": "string"
														},
														"recurrence": {
															"description": "Recurrence rules in RRULE format (e.g., ['RRULE:FREQ=WEEKLY;COUNT=10']). Can also include EXDATE for exception dates (e.g., ['RRULE:FREQ=WEEKLY;COUNT=10', 'EXDATE:2026-03-24T13:00:00']).",
															"type": "array",
															"items": {
																"type": "string"
															}
														}
													},
													"type": "object",
													"additionalProperties": false
												}
											},
											"type": {
												"description": "Type of scheduling link: 'singleUse' (one booking only), 'multiUse' (multiple bookings), 'recurring' (repeating weekly availability). Inferred from timeRanges if not provided.",
												"enum": ["singleUse", "multiUse", "recurring"],
												"type": "string"
											},
											"alias": {
												"description": "Custom URL slug for the scheduling link (letters, numbers, hyphens, underscores only). Must be between 1 and 32 characters. Auto-generated if not provided.",
												"minLength": 1,
												"maxLength": 32,
												"type": "string"
											},
											"useDefaultConferencing": {
												"description": "If true (default), uses the user's default video conferencing provider",
												"type": "boolean"
											},
											"minLeadTime": {
												"description": "Minimum notice period in minutes before a meeting can be booked",
												"minimum": 0,
												"maximum": 9007199254740991,
												"type": "integer"
											},
											"maxLeadTime": {
												"description": "Maximum advance booking window in minutes (how far into the future meetings can be booked)",
												"maximum": 9007199254740991,
												"exclusiveMinimum": 0,
												"type": "integer"
											},
											"expirationDate": {
												"description": "ISO 8601 date-time when this scheduling link expires and can no longer accept bookings",
												"type": "string"
											}
										},
										"type": "object",
										"additionalProperties": false
									},
									{
										"required": ["identity"],
										"properties": {
											"identity": {
												"description": "Identity of the scheduling link to update. These fields are used only to select and guard the existing link.",
												"required": ["schedulingLinkId", "bookingCalendarRef"],
												"properties": {
													"schedulingLinkId": {
														"description": "ID of the scheduling link to update",
														"type": "string"
													},
													"bookingCalendarRef": {
														"description": "Current booking calendar for this scheduling link. Used to verify that the agent is updating the intended link.",
														"required": ["accountId", "calendarId"],
														"properties": {
															"accountId": {
																"type": "string",
																"description": "Account that owns the current booking calendar."
															},
															"calendarId": {
																"type": "string",
																"description": "Current booking calendar identifier within the account."
															}
														},
														"type": "object",
														"additionalProperties": false
													}
												},
												"type": "object",
												"additionalProperties": false
											},
											"patch": {
												"description": "Patch of changes to apply to the scheduling link. Omitted fields are left unchanged, and nullable fields can be cleared with null.",
												"default": {},
												"properties": {
													"bookingCalendar": {
														"description": "Replace the calendar where meetings booked through this scheduling link are created",
														"required": ["accountId", "calendarId"],
														"properties": {
															"accountId": {
																"type": "string",
																"description": "Account that owns the replacement booking calendar."
															},
															"calendarId": {
																"type": "string",
																"description": "Replacement booking calendar identifier within the account."
															}
														},
														"type": "object",
														"additionalProperties": false
													},
													"conflictCalendars": {
														"description": "Replace the calendars checked for conflicts when determining availability",
														"type": "array",
														"items": {
															"required": ["accountId", "calendarId"],
															"properties": {
																"accountId": {
																	"type": "string",
																	"description": "Account that owns the replacement conflict calendar."
																},
																"calendarId": {
																	"type": "string",
																	"description": "Replacement conflict calendar identifier within the account."
																}
															},
															"type": "object",
															"additionalProperties": false
														}
													},
													"title": {
														"description": "Update the scheduling link title. Use null to clear it.",
														"type": ["string", "null"]
													},
													"description": {
														"description": "Update the scheduling link description. Use null to clear it.",
														"type": ["string", "null"]
													},
													"duration": {
														"description": "Update the meeting duration in minutes",
														"minimum": 5,
														"maximum": 9007199254740991,
														"type": "integer"
													},
													"timeRanges": {
														"description": "Replace the scheduling link availability windows",
														"minItems": 1,
														"type": "array",
														"items": {
															"required": ["startDate", "endDate"],
															"properties": {
																"startDate": {
																	"description": "Start of availability window in ISO 8601 format with timezone offset, e.g. '2024-08-22T09:00:00-04:00'",
																	"type": "string"
																},
																"endDate": {
																	"description": "End of availability window in ISO 8601 format with timezone offset, e.g. '2024-08-22T17:00:00-04:00'",
																	"type": "string"
																},
																"recurrence": {
																	"description": "Recurrence rules in RRULE format (e.g., ['RRULE:FREQ=WEEKLY;COUNT=10']). Can also include EXDATE for exception dates (e.g., ['RRULE:FREQ=WEEKLY;COUNT=10', 'EXDATE:2026-03-24T13:00:00']).",
																	"type": "array",
																	"items": {
																		"type": "string"
																	}
																}
															},
															"type": "object",
															"additionalProperties": false
														}
													},
													"type": {
														"description": "Update the scheduling link type. If omitted while timeRanges are updated, the type is inferred from the new timeRanges.",
														"enum": ["singleUse", "multiUse", "recurring"],
														"type": "string"
													},
													"alias": {
														"description": "Update the custom URL slug for the scheduling link. Must be between 1 and 32 characters.",
														"minLength": 1,
														"maxLength": 32,
														"type": "string"
													},
													"useDefaultConferencing": {
														"description": "If true, apply the default conferencing for the effective booking calendar account. If false, clear conferencing.",
														"type": "boolean"
													},
													"minLeadTime": {
														"description": "Update the minimum lead time in minutes. Must be 0 or greater and less than maxLeadTime when both are set. Use null to clear it.",
														"anyOf": [
															{
																"minimum": 0,
																"maximum": 9007199254740991,
																"type": "integer"
															},
															{
																"type": "null"
															}
														]
													},
													"maxLeadTime": {
														"description": "Update the maximum lead time in minutes. Must be greater than 0 and greater than minLeadTime when both are set. Use null to clear it.",
														"anyOf": [
															{
																"maximum": 9007199254740991,
																"exclusiveMinimum": 0,
																"type": "integer"
															},
															{
																"type": "null"
															}
														]
													},
													"expirationDate": {
														"description": "Update the expiration date for the scheduling link. Must be in the future when provided. Use null to clear it.",
														"type": ["string", "null"]
													}
												},
												"type": "object",
												"additionalProperties": false
											}
										},
										"type": "object",
										"additionalProperties": false
									},
									{
										"required": ["schedulingLinks"],
										"properties": {
											"schedulingLinks": {
												"description": "Scheduling links to delete",
												"minItems": 1,
												"maxItems": 50,
												"type": "array",
												"items": {
													"required": [
														"schedulingLinkId",
														"bookingCalendarRef"
													],
													"properties": {
														"schedulingLinkId": {
															"description": "ID of the scheduling link to delete",
															"type": "string"
														},
														"bookingCalendarRef": {
															"description": "Current booking calendar for this scheduling link. Used to verify the link's existing calendar before deleting it.",
															"required": ["accountId", "calendarId"],
															"properties": {
																"accountId": {
																	"type": "string",
																	"description": "Account that owns the current booking calendar."
																},
																"calendarId": {
																	"type": "string",
																	"description": "Current booking calendar identifier within the account."
																}
															},
															"type": "object",
															"additionalProperties": false
														}
													},
													"type": "object",
													"additionalProperties": false
												}
											}
										},
										"type": "object",
										"additionalProperties": false
									},
									{
										"type": "object",
										"properties": {
											"url": {
												"type": "string",
												"description": "The Notion form or form-view URL to retrieve."
											}
										},
										"additionalProperties": false,
										"required": ["url"]
									},
									{
										"$ref": "#/components/schemas/emptyObject"
									},
									{
										"type": "object",
										"additionalProperties": false,
										"required": ["meetingNote", "calendarEvent"],
										"properties": {
											"meetingNote": {
												"type": "string",
												"description": "URL of the existing full-page meeting note to link."
											},
											"calendarEvent": {
												"type": "object",
												"additionalProperties": false,
												"required": ["calendar", "eventId"],
												"description": "The calendar event to link the meeting note to. Copy calendar and eventId from the event returned by calendar tools.",
												"properties": {
													"calendar": {
														"type": "object",
														"additionalProperties": false,
														"required": ["accountId", "calendarId"],
														"description": "The calendar the event belongs to.",
														"properties": {
															"accountId": {
																"type": "string",
																"description": "ID of the calendar account."
															},
															"calendarId": {
																"type": "string",
																"description": "ID of the calendar."
															}
														}
													},
													"eventId": {
														"type": "string",
														"description": "ID of the event."
													}
												}
											}
										}
									},
									{
										"type": "object",
										"properties": {
											"databaseUrl": {
												"type": "string",
												"minLength": 1,
												"description": "URL of the database to convert, or of its data source or one of its views."
											},
											"dateProperty": {
												"type": "string",
												"minLength": 1,
												"description": "Name of an existing date property to use as the meeting date."
											},
											"attendeesProperty": {
												"type": "string",
												"minLength": 1,
												"description": "Name of an existing person property to use as the meeting attendees."
											}
										},
										"additionalProperties": false,
										"required": ["databaseUrl"]
									},
									{
										"type": "object",
										"additionalProperties": false,
										"properties": {
											"parent": {
												"description": "Where to file the meeting note. Pass only when the user names a destination; omit it to use the user's default meeting notes database. Pass a page to append the meeting note to the page content.",
												"oneOf": [
													{
														"type": "object",
														"additionalProperties": false,
														"required": ["type", "url"],
														"properties": {
															"type": {
																"type": "string",
																"const": "user",
																"description": "Parent type."
															},
															"url": {
																"type": "string",
																"description": "URL of the user."
															}
														}
													},
													{
														"type": "object",
														"additionalProperties": false,
														"required": ["type", "url"],
														"properties": {
															"type": {
																"type": "string",
																"const": "page",
																"description": "Parent type."
															},
															"url": {
																"type": "string",
																"description": "URL of the page."
															}
														}
													},
													{
														"type": "object",
														"additionalProperties": false,
														"required": ["type", "url"],
														"properties": {
															"type": {
																"type": "string",
																"const": "dataSource",
																"description": "Parent type."
															},
															"url": {
																"type": "string",
																"description": "URL of the data source."
															}
														}
													},
													{
														"type": "object",
														"additionalProperties": false,
														"required": ["type", "url"],
														"properties": {
															"type": {
																"type": "string",
																"const": "teamspace",
																"description": "Parent type."
															},
															"url": {
																"type": "string",
																"description": "URL of the teamspace."
															}
														}
													}
												]
											},
											"title": {
												"type": "string",
												"description": "Meeting note title."
											},
											"content": {
												"type": "string",
												"description": "The meeting note's Notes, in Notion Markdown (tool-docs://notion/notion-markdown.md). Do not wrap them in <meeting-notes> tags."
											},
											"calendarEvent": {
												"type": "object",
												"additionalProperties": false,
												"required": ["calendar", "eventId"],
												"description": "The calendar event to link the meeting note to. Copy calendar and eventId from the event returned by calendar tools.",
												"properties": {
													"calendar": {
														"type": "object",
														"additionalProperties": false,
														"required": ["accountId", "calendarId"],
														"description": "The calendar the event belongs to.",
														"properties": {
															"accountId": {
																"type": "string",
																"description": "ID of the calendar account."
															},
															"calendarId": {
																"type": "string",
																"description": "ID of the calendar."
															}
														}
													},
													"eventId": {
														"type": "string",
														"description": "ID of the event."
													}
												}
											}
										}
									}
								],
								"title": "Tool input",
								"description": "The input for the tool named by `tool_id`. Each tool documents its own input schema; the body is that object with no wrapper."
							}
						}
					}
				},
				"responses": {
					"200": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/runToolResponse"
								}
							}
						}
					},
					"202": {
						"description": "Accepted when `allow_async` is true and the tool call has been queued for background execution.",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"required": [
										"object",
										"id",
										"status",
										"status_url",
										"created_time",
										"operation",
										"poll_after_seconds"
									],
									"additionalProperties": false,
									"properties": {
										"object": {
											"type": "string",
											"const": "async_task"
										},
										"id": {
											"type": "string",
											"minLength": 1
										},
										"status_url": {
											"type": "string",
											"minLength": 1
										},
										"created_time": {
											"type": "string",
											"format": "date-time"
										},
										"operation": {
											"type": "object",
											"required": ["surface", "name"],
											"additionalProperties": false,
											"properties": {
												"surface": {
													"type": "string",
													"enum": ["rest", "mcp"]
												},
												"name": {
													"type": "string",
													"minLength": 1
												}
											}
										},
										"status": {
											"type": "string",
											"enum": ["queued", "running", "retrying"]
										},
										"poll_after_seconds": {
											"type": "integer",
											"minimum": 0
										}
									}
								}
							}
						}
					},
					"400": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_400"
								}
							}
						}
					},
					"401": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_401"
								}
							}
						}
					},
					"403": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_403"
								}
							}
						}
					},
					"404": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_404"
								}
							}
						}
					},
					"406": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_406"
								}
							}
						}
					},
					"409": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_409"
								}
							}
						}
					},
					"429": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_429"
								}
							}
						}
					},
					"500": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_500"
								}
							}
						}
					},
					"503": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_503"
								}
							}
						}
					},
					"504": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_504"
								}
							}
						}
					},
					"529": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_529"
								}
							}
						}
					}
				}
			}
		},
		"/v1/tools/run/eval": {
			"post": {
				"summary": "Run an AI tool in eval mode",
				"operationId": "run-tool-eval",
				"tags": ["Internal"],
				"x-hidden": true,
				"x-noIndex": true,
				"parameters": [
					{
						"$ref": "#/components/parameters/notionVersion"
					}
				],
				"requestBody": {
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"allOf": [
									{
										"type": "object",
										"properties": {
											"eval_session_id": {
												"type": "string",
												"minLength": 1,
												"maxLength": 64,
												"pattern": "^[A-Za-z0-9_-]{1,64}$",
												"description": "The eval session ID for tracking operations across multiple tool calls."
											},
											"eval_run_id": {
												"type": "string",
												"minLength": 1,
												"maxLength": 64,
												"pattern": "^[A-Za-z0-9_-]{1,64}$",
												"description": "The eval run ID for organizing a group of eval sessions."
											}
										},
										"required": ["eval_session_id", "eval_run_id"]
									},
									{
										"oneOf": [
											{
												"type": "object",
												"properties": {
													"type": {
														"type": "string",
														"const": "search",
														"description": "The name of the tool to run."
													},
													"search": {
														"type": "object",
														"properties": {
															"query": {
																"type": "string",
																"description": "Short, specific keywords for Notion content search. For user search, enter a name or email address. Provide a non-empty query unless intentionally browsing with filters or a non-relevance sort."
															},
															"query_type": {
																"type": "string",
																"enum": ["internal", "user"],
																"description": "Specify type of the query as either \"internal\" or \"user\". Always include this input if performing\n\"user\" search."
															},
															"data_source_url": {
																"type": "string",
																"description": "Optionally restrict keyword search to a data source URL returned in a <data-source> tag."
															},
															"page_url": {
																"type": "string",
																"description": "Optionally restrict keyword search to a page and its descendants. Accepts a Notion page URL or ID."
															},
															"teamspace_id": {
																"type": "string",
																"description": "Optionally, provide the ID of a teamspace to restrict search results to. This will perform a search\nover content within the specified teamspace only. Accepts the teamspace ID (UUIDv4) with or\nwithout dashes."
															},
															"filters": {
																"type": "object",
																"properties": {
																	"created_date_range": {
																		"type": "object",
																		"properties": {
																			"start_date": {
																				"type": "string",
																				"format": "date",
																				"description": "The start date of the date range as an ISO 8601 date string, if any."
																			},
																			"end_date": {
																				"type": "string",
																				"format": "date",
																				"description": "The end date of the date range as an ISO 8601 date string, if any."
																			}
																		},
																		"additionalProperties": false,
																		"description": "Optional filter to only produce search results created within the specified date range."
																	},
																	"created_by_user_ids": {
																		"type": "array",
																		"items": {
																			"type": "string"
																		},
																		"maxItems": 100,
																		"description": "Optional filter to only produce search results created by the Notion users that have the specified user IDs. Use \"me\" for the connected user."
																	},
																	"edited_by_user_ids": {
																		"type": "array",
																		"items": {
																			"type": "string"
																		},
																		"maxItems": 100,
																		"description": "Optional filter to only produce search results edited by the Notion users that have the specified user IDs. Use \"me\" for the connected user. Available on the Business plan."
																	},
																	"last_edited_date_range": {
																		"type": "object",
																		"properties": {
																			"start_date": {
																				"type": "string",
																				"format": "date",
																				"description": "The start date of the date range as an ISO 8601 date string, if any."
																			},
																			"end_date": {
																				"type": "string",
																				"format": "date",
																				"description": "The end date of the date range as an ISO 8601 date string, if any."
																			}
																		},
																		"additionalProperties": false,
																		"description": "Optional filter to only produce search results last edited within the specified date range. Available on the Business plan."
																	},
																	"teamspace_ids": {
																		"type": "array",
																		"items": {
																			"$ref": "#/components/schemas/idRequest"
																		},
																		"maxItems": 100,
																		"description": "Optional filter to only produce search results inside one of the specified teamspaces. Selecting more than one teamspace is available on the Business plan; use teamspace_id for one teamspace on other plans."
																	},
																	"title_only": {
																		"type": "boolean",
																		"description": "When true, match the query only against page and database titles instead of page content. Available on the Business plan."
																	},
																	"content_status": {
																		"type": "string",
																		"enum": [
																			"all_with_archived",
																			"all_without_archived",
																			"verified_only",
																			"archived_only"
																		],
																		"description": "Which pages to include by status. Omit for the default live pages. Supplying this field, even with the default value, requires Business access."
																	}
																},
																"description": "Optional exact filters for Notion workspace search. Omit unless required by the request. Keep filter fields nested here; do not send them at the top level. Some filters require Business access."
															},
															"sort": {
																"type": "string",
																"enum": ["relevance", "last_edited", "created"],
																"description": "Result ordering for Notion workspace search. Omit for the default \"relevance\" ordering. \"last_edited\" and \"created\" require Business access."
															},
															"page_size": {
																"type": "integer",
																"minimum": 1,
																"maximum": 50,
																"description": "Maximum number of results to return (default 10). Lower values reduce response size."
															},
															"max_highlight_length": {
																"type": "integer",
																"minimum": 0,
																"maximum": 500,
																"description": "Maximum character length for result highlights (default 200). Set to 0 to omit highlights entirely."
															}
														},
														"required": ["query"],
														"description": "The parameters for the search tool. Before the first content search for this connection, call get_tool_access with {} unless its current access result is already in context. Choose the content-search tool by current_tool_access.ai_search.status, not by query wording:\n- If the status is \"available\", use ai_search for every keyword, page-title, project-name, or natural-language content search.\n- If access discovery reports that AI search is not available to this connection, use search with short, specific keywords. Missing access information is not a denial; call get_tool_access first.\n\nStart with a non-empty query and omit optional parameters unless needed. Do not add filters or sorting just to fill in defaults. Business or Enterprise is required for filters.edited_by_user_ids, filters.last_edited_date_range, filters.title_only=true, filters.content_status, more than one distinct teamspace across teamspace_id and filters.teamspace_ids, and sort other than relevance. Check current_tool_access.search.restricted_parameters; unavailable options are dropped with a notice and results may be broader. Keep filters nested inside \"filters\". Use page_size, not limit. When AI search is available, use ai_search for structured content searches too.\n\nFor user lookup, use ai_search with query_type=\"user\" when AI search is available; otherwise use search with query_type=\"user\". A document about a person is a content search, not a user lookup.\n\n<example description=\"AI search unavailable: find a page by title\">\n{\"query\":\"Q3 roadmap\"}\n</example>\n<example description=\"Find a user on any plan\">\n{\"query\":\"alex@example.com\",\"query_type\":\"user\"}\n</example>"
													}
												},
												"required": ["type", "search"],
												"title": "Search"
											},
											{
												"type": "object",
												"properties": {
													"type": {
														"type": "string",
														"const": "ai_search",
														"description": "The name of the tool to run."
													},
													"ai_search": {
														"type": "object",
														"properties": {
															"query": {
																"type": "string",
																"description": "Exact keywords, a page title, a project name, or a concise natural-language question. Keywords are valid; a question is not required. Preserve distinctive names and identifiers. Prefer one topic per call, ideally under 50 words. Provide a non-empty query unless intentionally browsing Notion with filters or a non-relevance sort."
															},
															"query_type": {
																"type": "string",
																"enum": ["internal", "user"],
																"description": "Omit or use \"internal\" for content search. Use \"user\" to look up a workspace user by name or email."
															},
															"data_source_url": {
																"type": "string",
																"description": "Optionally restrict search to a data source URL returned in a <data-source> tag. Omit when searching the whole workspace."
															},
															"page_url": {
																"type": "string",
																"description": "Optionally restrict search to a page and its descendants. Accepts a Notion page URL or ID. Omit when searching the whole workspace."
															},
															"teamspace_id": {
																"type": "string",
																"description": "Optionally restrict search to a teamspace ID."
															},
															"filters": {
																"type": "object",
																"properties": {
																	"created_date_range": {
																		"type": "object",
																		"properties": {
																			"start_date": {
																				"type": "string",
																				"format": "date",
																				"description": "The start date of the date range as an ISO 8601 date string, if any."
																			},
																			"end_date": {
																				"type": "string",
																				"format": "date",
																				"description": "The end date of the date range as an ISO 8601 date string, if any."
																			}
																		},
																		"additionalProperties": false,
																		"description": "Optional filter to only produce search results created within the specified date range."
																	},
																	"created_by_user_ids": {
																		"type": "array",
																		"items": {
																			"type": "string"
																		},
																		"maxItems": 100,
																		"description": "Optional filter to only produce search results created by the Notion users that have the specified user IDs. Use \"me\" for the connected user."
																	},
																	"edited_by_user_ids": {
																		"type": "array",
																		"items": {
																			"type": "string"
																		},
																		"maxItems": 100,
																		"description": "Optional filter to only produce search results edited by the Notion users that have the specified user IDs. Use \"me\" for the connected user. Available on the Business plan."
																	},
																	"last_edited_date_range": {
																		"type": "object",
																		"properties": {
																			"start_date": {
																				"type": "string",
																				"format": "date",
																				"description": "The start date of the date range as an ISO 8601 date string, if any."
																			},
																			"end_date": {
																				"type": "string",
																				"format": "date",
																				"description": "The end date of the date range as an ISO 8601 date string, if any."
																			}
																		},
																		"additionalProperties": false,
																		"description": "Optional filter to only produce search results last edited within the specified date range. Available on the Business plan."
																	},
																	"teamspace_ids": {
																		"type": "array",
																		"items": {
																			"$ref": "#/components/schemas/idRequest"
																		},
																		"maxItems": 100,
																		"description": "Optional filter to only produce search results inside one of the specified teamspaces. Selecting more than one teamspace is available on the Business plan; use teamspace_id for one teamspace on other plans."
																	},
																	"title_only": {
																		"type": "boolean",
																		"description": "When true, match the query only against page and database titles instead of page content. Available on the Business plan."
																	},
																	"content_status": {
																		"type": "string",
																		"enum": [
																			"all_with_archived",
																			"all_without_archived",
																			"verified_only",
																			"archived_only"
																		],
																		"description": "Which pages to include by status. Omit for the default live pages. Supplying this field, even with the default value, requires Business access."
																	}
																},
																"additionalProperties": false,
																"description": "Optional exact filters for Notion pages and databases. Supplying an effective filter selects Notion-only workspace search so the filter is enforced exactly. Omit for unified search across Notion and connected sources. Keep filter fields nested here. Some filters require Business access."
															},
															"sort": {
																"type": "string",
																"enum": ["relevance", "last_edited", "created"],
																"description": "Omit for the default \"relevance\" ordering. \"last_edited\" and \"created\" select Notion-only workspace search and require Business access."
															},
															"page_size": {
																"type": "integer",
																"minimum": 1,
																"maximum": 50,
																"description": "Maximum number of results to return (default 10)."
															},
															"max_highlight_length": {
																"type": "integer",
																"minimum": 0,
																"maximum": 500,
																"description": "Maximum result highlight length (default 200). Set to 0 to omit highlights."
															}
														},
														"additionalProperties": false,
														"required": ["query"],
														"description": "The parameters for the ai_search tool. Use this tool for every content search when access discovery reports current_tool_access.ai_search.status=\"available\". This includes exact keywords, page titles, project names, and natural-language questions. Choose by the connection's access, not by query wording. If access is not already known, call get_tool_access first. If access discovery reports that AI search is not available, use search instead.\n\nSearch Notion and connected workspace sources available to you, such as Slack, Mail, and Calendar. Keywords are valid; a question is not required. Preserve distinctive names and identifiers. Prefer one topic per call, ideally under 50 words.\n\nStart with {\"query\":\"...\"} and omit optional parameters unless needed. For user lookup, set query_type=\"user\" and provide a name or email. Omit content filters and sort for user lookup. Do not send content_search_mode. Exact filters, non-relevance sorting, and filter-only browsing are supported by this tool and return Notion-only workspace results with supported constraints applied. Omit these options to search Notion and connected sources together. Filter and sort access is separate from AI access: check current_tool_access.ai_search.restricted_parameters. Unavailable options are dropped with a notice. If AI access is unavailable, this tool falls back to keyword search in Notion only and reports that connected sources were not searched. User name or email lookup uses this tool with query_type=\"user\".\n\n<example description=\"AI search available: find a page by title\">\n{\"query\":\"Q3 roadmap\"}\n</example>\n<example description=\"AI search available: find an exact identifier\">\n{\"query\":\"ACME-123\"}\n</example>\n<example description=\"AI search available: answer a question\">\n{\"query\":\"Why did we delay the launch?\"}\n</example>\n<example description=\"AI search available: browse Notion pages created in a date range\">\n{\"query\":\"\",\"filters\":{\"created_date_range\":{\"start_date\":\"2026-07-01\",\"end_date\":\"2026-08-01\"}}}\n</example>"
													}
												},
												"required": ["type", "ai_search"],
												"title": "Ai Search"
											},
											{
												"type": "object",
												"properties": {
													"type": {
														"type": "string",
														"const": "connector_search",
														"description": "The name of the tool to run."
													},
													"connector_search": {
														"type": "object",
														"properties": {
															"question": {
																"type": "string",
																"description": "Natural language query. Be specific and descriptive."
															},
															"keywords": {
																"type": "string",
																"description": "Core entities or terms for keyword-based search APIs such as Slack, email, and calendar. Recommended for long questions. Defaults to question when omitted or blank."
															},
															"lookback": {
																"type": "string",
																"description": "Optional time window. Use only \"default\", \"all_time\", a duration matching /^\\d+[dwmy]$/ (for example, \"7d\", \"2w\", \"3m\", or \"1y\"), or a date in \"YYYY-MM-DD\" format. Do not use natural-language durations or combine units."
															},
															"sources": {
																"type": "array",
																"items": {
																	"type": "string",
																	"minLength": 1,
																	"maxLength": 64
																},
																"maxItems": 32,
																"uniqueItems": true,
																"description": "Optionally search only these connected sources, such as [\"slack\"] or [\"google-drive\", \"github\"]. Valid names: slack, google-drive, github, jira, microsoft-teams, sharepoint, gmail, linear, outlook, notion-mail, google-calendar, notion-calendar, salesforce, asana, box, confluence. Uses the names results report in searchedSources. Omit to search every connected source. Fewer sources return sooner. Unknown names and sources unavailable for this search are skipped with a warning; if no valid name is left, every connected source is searched. Notion is not a source here; use search for Notion content."
															}
														},
														"additionalProperties": false,
														"required": ["question"],
														"description": "The parameters for the connector_search tool. Search connected workspace sources such as Slack, Google Drive, GitHub, mail, and calendar. Connected-source results are final: don't pass their id or url to fetch, which can't open them. Use the title and snippet, and cite the url. Does not search Notion pages or databases; use search for those. On the first search for an information need, call this tool in parallel with search, unless the user names a source, the request is a user lookup, or the request is about Notion pages or databases themselves. Decisions, status updates, and discussions often live in connected sources. Put the full question in question and distinctive names and terms in keywords. To search only some sources, pass sources. Results list the sources searched and any source that failed or timed out."
													}
												},
												"required": ["type", "connector_search"],
												"title": "Connector Search"
											},
											{
												"type": "object",
												"properties": {
													"type": {
														"type": "string",
														"const": "memory_search",
														"description": "The name of the tool to run."
													},
													"memory_search": {
														"type": "object",
														"properties": {
															"query": {
																"type": "string",
																"minLength": 1,
																"maxLength": 500,
																"pattern": "\\S",
																"description": "Words or a short phrase to find in personal memories."
															},
															"limit": {
																"type": "integer",
																"minimum": 1,
																"maximum": 50,
																"description": "Maximum number of memories to return. Defaults to 10 and cannot exceed 50."
															}
														},
														"additionalProperties": false,
														"required": ["query"],
														"description": "The parameters for the memory_search tool. Search memories that the user's connected agents saved in earlier sessions: context, preferences, corrections, and decisions. Returns the best matches, not every memory. To list, count, or filter memories, fetch id \"memory\" and run query-data-sources on its data source. The first time you use memory in a conversation, whether searching or saving, read notion://docs/memory once."
													}
												},
												"required": ["type", "memory_search"],
												"title": "Memory Search"
											},
											{
												"type": "object",
												"properties": {
													"type": {
														"type": "string",
														"const": "get_tool_access",
														"description": "The name of the tool to run."
													},
													"get_tool_access": {
														"type": "object",
														"properties": {
															"tool_names": {
																"type": "array",
																"items": {
																	"type": "string",
																	"minLength": 1,
																	"maxLength": 100
																},
																"maxItems": 100,
																"description": "Optional RunTool names to include, such as search and ai_search. Omit to return all tools visible to this connection. Unknown or unexposed names are omitted. An empty list returns an empty map."
															}
														},
														"additionalProperties": false,
														"description": "The parameters for the get_tool_access tool. Get current tool availability, parameter restrictions, and available upgrade links for this Notion connection. Call with {} to get the full access map before using a conditionally available tool, unless current access is already in context. Reuse this map across tools. When current_tool_access.ai_search.status is \"available\", use ai_search for every content search; otherwise use search. Tool availability and restricted_parameters are independent: omit restricted options even when the tool is available. Optionally pass tool_names, for example [\"search\", \"ai_search\"], to narrow the result. Unknown names and tools not exposed to this connection are omitted. When ai_search is available, legacy search is also omitted from this map; user lookup uses ai_search with query_type=\"user\". This tool does not grant access or change the workspace."
													}
												},
												"required": ["type", "get_tool_access"],
												"title": "Get Tool Access"
											},
											{
												"type": "object",
												"properties": {
													"type": {
														"type": "string",
														"const": "fetch",
														"description": "The name of the tool to run."
													},
													"fetch": {
														"type": "object",
														"properties": {
															"id": {
																"type": "string",
																"description": "The ID or URL of the Notion page, database, or data source to fetch. Supports notion.so URLs, Notion Sites URLs (*.notion.site), raw UUIDs, and data source URLs (collection://...). Pass \"memory\" to fetch the connected user's About page and memory database in this workspace without creating them. Pass a notion://docs/* URI to read that documentation resource. Also accepts an explicit saved view URL (view://...) from a database response. If a database block ID returns a validation error, use the collection:// URL from that error. Example: <example>notion://docs/enhanced-markdown-spec</example>."
															},
															"include_transcript": {
																"type": "boolean",
																"description": "Whether to include meeting note transcripts. Defaults to false. When true, full transcripts are included; when false, a placeholder with the meeting note URL is shown instead."
															},
															"include_discussions": {
																"type": "boolean",
																"description": "Whether to include discussion/comment indicators in the page output. When true, adds a <page-discussions> summary with discussion count, preview snippets, and discussion:// URLs. Use with the get_comments tool to retrieve full discussion content. Defaults to false."
															},
															"include_file_urls": {
																"type": "boolean",
																"description": "Whether to return signed download URLs for uploaded files. Defaults to false. When false, page Markdown cites uploaded files by stable notion-file-block:// references and the response has no references map; call get_file_download_urls with the references when you need those files' contents. When true, the response's references map gives the signed URL for each reference."
															}
														},
														"required": ["id"],
														"description": "The parameters for the fetch tool. Retrieves details about a Notion entity (page, database, data source, or saved database view) by URL or ID.\n\nProvide a URL or ID in `id`. Make multiple calls for multiple entities.\n\nFor pages, use path, verification, edit time, and truncation metadata to assess the source. Treat recency as context, not proof. Report material uncertainty when sources conflict.\n\n\nPages use enhanced Markdown format. For the complete specification,\nread the MCP resource `notion://docs/enhanced-markdown-spec` through your MCP client's resource-reading interface, or call the Notion \"fetch\" tool with this URI if your client does not support reading MCP resources. Do NOT pass this URI to any other URL-fetching tool.\n\nPass a `notion://docs/*` URI as `id` to read that MCP documentation resource.\n\nDatabases return data sources in `<data-source url=\"collection://...\">` tags. Fetch the\ncollection:// URL for its schema and use it with update_data_source or query_data_sources.\nMulti-source databases return more than one data source.\n\nSaved views return filters, sorts, and display settings. To query their rows, use\nquery_data_sources with `mode: \"view\"`.\n\nA null cover or icon means none; an omitted one means unavailable, not absent. Keep a\npage's Markdown icon attribute for edit round trips. File URLs expire; re-fetch to refresh\nthem. Uploaded media blocks use stable `notion-file-block://` sources; keep them when\nediting or copying Markdown. Get download URLs with get_file_download_urls, or set\n`include_file_urls` to true for a `references` map. Before relying on page\ncontent, check `truncated`, `unknown_block_count`, and `unknown_block_ids` for\nomitted subtrees.\n\nSet `include_discussions` to true for discussion counts, markers, previews, and\n`discussion://` URLs that correlate with get_comments.\n\nUse get_tool_access to check tool availability, parameter restrictions, and upgrade links for this connection."
													}
												},
												"required": ["type", "fetch"],
												"title": "Fetch"
											},
											{
												"type": "object",
												"properties": {
													"type": {
														"type": "string",
														"const": "get_file_download_urls",
														"description": "The name of the tool to run."
													},
													"get_file_download_urls": {
														"type": "object",
														"properties": {
															"references": {
																"type": "array",
																"items": {
																	"type": "string"
																},
																"maxItems": 25,
																"minItems": 1,
																"uniqueItems": true,
																"description": "Stable notion-file-block:// file references, copied exactly from the Markdown returned by fetch. Up to 25 per call."
															}
														},
														"additionalProperties": false,
														"required": ["references"],
														"description": "The parameters for the get_file_download_urls tool. Get signed download URLs for files that fetch output cites by stable `notion-file-block://` references.\n\nPass up to 25 references exactly as they appear in the page Markdown. Each reference resolves independently: `files` lists the ones that resolved and `unresolved` lists the rest with a reason. The URLs expire after a few minutes; call this tool again for fresh ones. Keep the stable references, not the URLs, when editing or copying page Markdown.\n\n<examples>\n1. Get download URLs: {\"references\":[\"notion-file-block://12345678-90ab-4def-8234-567890abcdef/abcdef12-3456-4890-abcd-ef1234567890?space_id=fedcba98-7654-4321-8fed-cba987654321&name=diagram.png\"]}\n</examples>"
													}
												},
												"required": ["type", "get_file_download_urls"],
												"title": "Get File Download Urls"
											},
											{
												"type": "object",
												"properties": {
													"type": {
														"type": "string",
														"const": "create_pages",
														"description": "The name of the tool to run."
													},
													"create_pages": {
														"type": "object",
														"properties": {
															"pages": {
																"type": "array",
																"items": {
																	"type": "object",
																	"properties": {
																		"properties": {
																			"type": "object",
																			"additionalProperties": {
																				"oneOf": [
																					{
																						"type": "string"
																					},
																					{
																						"type": "number"
																					},
																					{
																						"type": "array",
																						"items": {
																							"type": "string"
																						},
																						"maxItems": 100
																					},
																					{
																						"type": "null"
																					}
																				]
																			},
																			"description": "The properties of the new page, which is a JSON map of property names to SQLite values.\nFor pages in a database, use the SQLite schema definition shown in <database>.\nFor pages outside of a database, the only allowed property is \"title\", which is the title of the page and is automatically shown at the top of the page as a large heading.\n**IMPORTANT**: Some property types require specific formats:\n\t- Date properties: Split into \"date:{property}:start\", \"date:{property}:end\" (optional), and\n\t  \"date:{property}:is_datetime\" (0 or 1)\n\t- Place properties: Split into \"place:{property}:name\", \"place:{property}:address\",\n\t  \"place:{property}:latitude\", \"place:{property}:longitude\", and\n\t  \"place:{property}:google_place_id\" (optional)\n\t- Number properties: Use JavaScript numbers (not strings)\n\t- Checkbox properties: Use \"__YES__\" for checked, \"__NO__\" for unchecked\n\t- Relation properties: Use an array of related page URLs or page IDs, e.g.\n\t  [\"https://www.notion.so/26ab1f9f4c5f80b18d3bd10a6b1d2f4e\", \"26ab1f9f-4c5f-80b1-8d3b-d10a6b1d2f4e\"]\n\t- Person properties: Use an array of user IDs, user or agent URLs, or group references\n\t  copied from fetch output (\"space_permission_group-<UUID>\"). Bare group UUIDs are also supported.\n\t- Files properties: Use a JSON array of file IDs, Notion Folder URLs, and/or <folder> tags\n\t  copied from fetch output. Folders are stored as native Folder references, not ordinary links.\n\n\t**Special property naming**: Properties named \"id\" or \"url\" (case insensitive) must be\n\tprefixed with \"userDefined:\" (e.g., \"userDefined:URL\", \"userDefined:id\")"
																		},
																		"content": {
																			"type": "string",
																			"description": "The content of the new page, using Notion Markdown. For people and dates, use user and date mentions rather than plain text; notion://docs/enhanced-markdown-spec gives the syntax."
																		},
																		"template_id": {
																			"type": "string",
																			"description": "The ID of a template to apply to this page. When specified, do not provide 'content' as the template will provide it. Properties can still be set alongside the template. Get template IDs from the <templates> section in the fetch tool results. Template application is asynchronous: the page starts blank and content appears shortly after."
																		},
																		"icon": {
																			"type": "string",
																			"description": "An emoji character (e.g. \"🚀\"), a custom emoji by name (e.g. \":rocket_ship:\"), a Notion icon identifier as returned by fetch (e.g. \"icons/pizza_blue\"), or an external image URL. Use \"none\" to explicitly set no icon. Omit to leave unchanged. Keep the title free of a duplicate leading emoji because the icon renders separately."
																		},
																		"cover": {
																			"type": "string",
																			"description": "An external image URL for the page cover. Use \"none\" to explicitly set no cover. Omit to leave unchanged."
																		},
																		"is_skill": {
																			"type": "boolean",
																			"description": "Set to true only when the user asks for reusable instructions or a repeatable workflow. Do not mark ordinary reference pages, one-time documents, or drafts as skills. Before creating a skill, read the MCP resource `notion://docs/skills` through your MCP client's resource-reading interface. If your client does not support reading MCP resources, call the Notion \"fetch\" tool with this URI instead. Do NOT pass this URI to any other URL-fetching tool. False has the same effect as omitting the field."
																		},
																		"preserve_internal_links": {
																			"type": "boolean",
																			"description": "Preserve internal Markdown links instead of converting them to native mentions."
																		}
																	},
																	"additionalProperties": false
																},
																"maxItems": 100,
																"description": "The pages to create."
															},
															"creation_mode": {
																"type": "string",
																"const": "draft",
																"description": "If the user explicitly names a private or shared destination, omit \"creation_mode\" and use that parent. Otherwise, use \"draft\" when the user clearly wants a durable page but has not named a destination. Prefer this explicit draft mode over omitting the parent. Draft mode is server-enforced: it creates a private workspace-level page and cannot be combined with \"parent\". Create it without first asking where it should live. After creation, tell the user it is private and offer to move it once they name a destination."
															},
															"parent": {
																"oneOf": [
																	{
																		"type": "string",
																		"const": "memory",
																		"description": "Always `memory`"
																	},
																	{
																		"type": "object",
																		"properties": {
																			"page_id": {
																				"type": "string",
																				"description": "The ID of the parent page (with or without dashes), for example, 195de9221179449fab8075a27c979105"
																			},
																			"type": {
																				"type": "string",
																				"const": "page_id",
																				"description": "Always `page_id`"
																			}
																		},
																		"required": ["page_id"]
																	},
																	{
																		"type": "object",
																		"properties": {
																			"database_id": {
																				"type": "string",
																				"description": "The ID of the parent database (with or without dashes), for example, 195de9221179449fab8075a27c979105"
																			},
																			"type": {
																				"type": "string",
																				"const": "database_id",
																				"description": "Always `database_id`"
																			}
																		},
																		"required": ["database_id"]
																	},
																	{
																		"type": "object",
																		"properties": {
																			"data_source_id": {
																				"type": "string",
																				"description": "The ID of the parent data source (collection), with or without dashes. For example, f336d0bc-b841-465b-8045-024475c079dd"
																			},
																			"type": {
																				"type": "string",
																				"const": "data_source_id",
																				"description": "Always `data_source_id`"
																			}
																		},
																		"required": ["data_source_id"]
																	},
																	{
																		"type": "object",
																		"properties": {
																			"teamspace_id": {
																				"type": "string",
																				"description": "The ID of the teamspace in which to create top-level pages (with or without dashes)."
																			}
																		},
																		"additionalProperties": false,
																		"required": ["teamspace_id"]
																	}
																],
																"description": "All pages in one call share this parent. Pass \"memory\" to save a personal memory; see notion://docs/memory. Otherwise use a page (page_id), database page (database_id), data source (data_source_id), or teamspace root (teamspace_id, from get_teams). Teamspace roots require a user-backed connection and permission to add top-level pages. A database_id cannot be used when the database has more than one data source; fetch it and use the right collection:// URL as data_source_id. If omitted, pages are private at the workspace level. When no destination is named, prefer explicit \"creation_mode\": \"draft\" over omitting the parent."
															},
															"allow_async": {
																"type": "boolean",
																"description": "Default to true for page creation. Set to false only when the next step needs the created pages immediately, or when async execution rejects the request as too large. When this create operation is accepted for background execution, it returns an async_task result. Use get_async_task to wait for a succeeded status before taking a dependent action on the pages. For pages created with template_id, a succeeded status does not mean template content is ready; fetch and retry until it is ready before changing or relying on that content. If omitted or false, the tool keeps the existing synchronous result shape."
															}
														},
														"required": ["pages"],
														"description": "The parameters for the create_pages tool. Creates one or more Notion pages with the specified properties and content.\n\n\t\t## Core rules\n\n\t\t**IMPORTANT**: Before writing page content, read the MCP resource `notion://docs/enhanced-markdown-spec` through your MCP client's resource-reading interface, or call the Notion \"fetch\" tool with this URI if your client does not support reading MCP resources. Do NOT pass this URI to any other URL-fetching tool.\n\t\tDo NOT guess or hallucinate Markdown syntax. Do not put the page title at the top of\n\t\tcontent; set it in properties. By default, use native Notion mentions for references you add to existing Notion pages,\n\t\tdatabases, data sources, people, and dates. Use Markdown links only for external URLs or when\n\t\tthe user requests a plain link. For a person, use a user mention with their user URL, found with\n\t\tsearch using query_type \"user\"; do not write \"@Name\" as plain text. For a specific date or time,\n\t\tsuch as a due date or meeting time, use a date mention. The Markdown specification gives the\n\t\tmention syntax.\n\n\t\tUse a named destination as parent. Otherwise use \"creation_mode\": \"draft\" for a durable\n\t\tprivate page. Do not combine draft mode with parent, or move or share it without direction.\n\n\t\tFor a meeting note, use create_meeting_note if available, even in a Meetings\n\t\tdatabase, unless the user wants a regular page.\n\n\t\tFor a database destination, ALWAYS fetch first. Use its collection:// URL as data_source_id,\n\t\texact property names, and title property. Never put a database ID in page_id. Outside a\n\t\tdatabase, the only allowed property is the required \"title\".\n\n\t\tFor reusable instructions, set \"is_skill\": true. Before creating a skill, read the MCP resource `notion://docs/skills` through your MCP client's resource-reading interface. If your client does not support reading MCP resources, call the Notion \"fetch\" tool with this URI instead. Do NOT pass this URI to any other URL-fetching tool.\n\t\tDo not mark ordinary pages or drafts as skills.\n\t\tReport any \"warnings\" in the result to the user."
													}
												},
												"required": ["type", "create_pages"],
												"title": "Create Pages"
											},
											{
												"type": "object",
												"properties": {
													"type": {
														"type": "string",
														"const": "update_page",
														"description": "The name of the tool to run."
													},
													"update_page": {
														"type": "object",
														"properties": {
															"page_id": {
																"type": "string",
																"description": "The page ID, with or without dashes, or a Notion page URL."
															},
															"command": {
																"type": "string",
																"enum": [
																	"update_properties",
																	"update_content",
																	"replace_content",
																	"insert_content",
																	"apply_template",
																	"update_verification"
																],
																"description": "The update command to execute."
															},
															"properties": {
																"type": "object",
																"additionalProperties": {
																	"oneOf": [
																		{
																			"type": "string"
																		},
																		{
																			"type": "number"
																		},
																		{
																			"type": "array",
																			"items": {
																				"oneOf": [
																					{
																						"type": "string"
																					},
																					{
																						"type": "object",
																						"properties": {
																							"type": {
																								"type": "string",
																								"const": "file_upload",
																								"description": "Always `file_upload`"
																							},
																							"file_upload": {
																								"type": "object",
																								"properties": {
																									"id": {
																										"type": "string",
																										"description": "ID of a file upload returned by create_file_upload or create_attachment."
																									}
																								},
																								"required": ["id"],
																								"description": "The uploaded file to attach to the Files property."
																							}
																						},
																						"required": ["type", "file_upload"]
																					}
																				]
																			},
																			"maxItems": 100
																		},
																		{
																			"type": "null"
																		}
																	]
																},
																"description": "Used by the \"update_properties\" command, and required unless \"icon\", \"cover\", or \"is_skill\" is set. A JSON object that updates the page's properties.\nFor pages in a database, fetch the page or its data source first and use the exact property names and SQLite schema definition shown in <database>.\nFor page titles outside a database, use \"title\" in inline Markdown.\nFor a Files property, an uploaded file can be provided as {\"type\":\"file_upload\",\"file_upload\":{\"id\":\"<file-upload-id>\"}} inside the property's array.\nUse null to remove a property's value.\n**IMPORTANT**: Some property types require specific formats:\n\t- Date properties: Split into \"date:{property}:start\", \"date:{property}:end\" (optional), and\n\t  \"date:{property}:is_datetime\" (0 or 1)\n\t- Place properties: Split into \"place:{property}:name\", \"place:{property}:address\",\n\t  \"place:{property}:latitude\", \"place:{property}:longitude\", and\n\t  \"place:{property}:google_place_id\" (optional)\n\t- Number properties: Use JavaScript numbers (not strings)\n\t- Checkbox properties: Use \"__YES__\" for checked, \"__NO__\" for unchecked\n\t- Relation properties: Use an array of related page URLs or page IDs, e.g.\n\t  [\"https://www.notion.so/26ab1f9f4c5f80b18d3bd10a6b1d2f4e\", \"26ab1f9f-4c5f-80b1-8d3b-d10a6b1d2f4e\"]\n\t- Person properties: Use an array of user IDs, user or agent URLs, or group references\n\t  copied from fetch output (\"space_permission_group-<UUID>\"). Bare group UUIDs are also supported.\n\t- Files properties: Use a JSON array of file IDs, Notion Folder URLs, and/or <folder> tags\n\t  copied from fetch output. Folders are stored as native Folder references, not ordinary links.\n\n\t**Special property naming**: Properties named \"id\" or \"url\" (case insensitive) must be\n\tprefixed with \"userDefined:\" (e.g., \"userDefined:URL\", \"userDefined:id\")"
															},
															"new_str": {
																"type": "string",
																"description": "Required for \"replace_content\" command. The new content string to replace the entire page content with. Preserve child pages and databases with their exact fetched <page url=\"...\"> or <database url=\"...\"> tags. For people and dates, use user and date mentions rather than plain text; notion://docs/enhanced-markdown-spec gives the syntax."
															},
															"content": {
																"type": "string",
																"description": "Required for \"insert_content\" command. The markdown content to insert into the page. For people and dates, use user and date mentions rather than plain text; notion://docs/enhanced-markdown-spec gives the syntax."
															},
															"content_updates": {
																"type": "array",
																"items": {
																	"type": "object",
																	"properties": {
																		"old_str": {
																			"type": "string",
																			"minLength": 1,
																			"description": "The existing content string to find and replace. Must exactly match the page content."
																		},
																		"new_str": {
																			"type": "string",
																			"description": "The new content string to replace old_str with. For people and dates, use user and date mentions rather than plain text; notion://docs/enhanced-markdown-spec gives the syntax."
																		},
																		"replace_all_matches": {
																			"type": "boolean",
																			"description": "If true, replaces all occurrences of old_str. If false (default), the operation fails if there are multiple matches."
																		}
																	},
																	"required": ["old_str", "new_str"]
																},
																"maxItems": 100,
																"description": "Required for \"update_content\" command. An array of search-and-replace operations, each with old_str (content to find) and new_str (replacement content). Operations that match are applied, and each one that matches nothing is reported in \"warnings\". The call fails only when no operation that changes content matches."
															},
															"position": {
																"oneOf": [
																	{
																		"type": "object",
																		"properties": {
																			"type": {
																				"type": "string",
																				"const": "start",
																				"description": "Insert the content at the start of the page."
																			}
																		},
																		"required": ["type"]
																	},
																	{
																		"type": "object",
																		"properties": {
																			"type": {
																				"type": "string",
																				"const": "end",
																				"description": "Insert the content at the end of the page."
																			}
																		},
																		"required": ["type"]
																	}
																],
																"description": "Optional for \"insert_content\" command. Use {\"type\":\"start\"} to prepend content or {\"type\":\"end\"} to append content. Omit to append."
															},
															"allow_deleting_content": {
																"type": "boolean",
																"description": "Optional for \"replace_content\" and \"update_content\" commands. Set to true to allow deletion of child pages and databases that are not referenced in the new content. If false or omitted, the operation will fail with an error listing the pages/databases that would be deleted. Show that list and ask the user for confirmation before retrying with true."
															},
															"template_id": {
																"type": "string",
																"description": "Required for \"apply_template\" command. The ID of a template to apply to this page; any page ID can be used as a template. Template content is appended to any existing page content asynchronously."
															},
															"verification_status": {
																"type": "string",
																"enum": ["verified", "unverified"],
																"description": "Required for \"update_verification\" command. Set to \"verified\" to mark the page as verified, or \"unverified\" to remove verification. Requires a Business or Enterprise plan unless the page is in a wiki. When updating verification, the owner will be automatically set to the authenticated actor."
															},
															"verification_expiry_days": {
																"type": "integer",
																"minimum": 1,
																"description": "Optional for \"update_verification\" command when verification_status is \"verified\". Number of days until verification expires (e.g. 7, 30, 90). Omit for indefinite verification."
															},
															"icon": {
																"type": "string",
																"description": "An emoji character (e.g. \"🚀\"), a custom emoji by name (e.g. \":rocket_ship:\"), a Notion icon identifier as returned by fetch (e.g. \"icons/pizza_blue\"), or an external image URL. Use \"none\" to remove the icon. Omit to leave unchanged. Can be set alongside any command. To change only the icon, use \"update_properties\" and omit \"properties\". Keep the title free of a duplicate leading emoji because the icon renders separately."
															},
															"cover": {
																"type": "string",
																"description": "An external image URL for the page cover. Use \"none\" to remove the cover. Omit to leave unchanged. Can be set alongside any command. To change only the cover, use \"update_properties\" and omit \"properties\"."
															},
															"is_skill": {
																"type": "boolean",
																"description": "Set to true to mark this page as a skill, or false to remove the skill designation. Can be set alongside any command. To change only skill status, use \"update_properties\" and omit \"properties\". Before creating a skill, read the MCP resource `notion://docs/skills` through your MCP client's resource-reading interface. If your client does not support reading MCP resources, call the Notion \"fetch\" tool with this URI instead. Do NOT pass this URI to any other URL-fetching tool."
															},
															"allow_async": {
																"type": "boolean",
																"description": "Default to true for page updates. Set to false only when the next step needs the updated page immediately, or when async execution rejects the request as too large. When this update operation is accepted for background execution, it returns an async_task result. Use get_async_task to wait for a succeeded status before taking a dependent action on the page. For apply_template, a succeeded status does not mean template content is ready; fetch and retry until it is ready before changing or relying on that content. If omitted or false, the tool waits for a synchronous result when possible, but may still return a pollable async_task response if queued execution exceeds the synchronous wait deadline."
															},
															"draft_mode": {
																"type": "boolean",
																"description": "Optional. When true, your edit is saved in revision as draft for the user to review and apply, and the page is not changed. Use it when the user wants to review changes before they take effect."
															},
															"change_description": {
																"type": "string",
																"maxLength": 2000,
																"description": "Optional. One short sentence on why you are changing this page and what has changed. The user sees it next to this page's changes when they review them."
															}
														},
														"required": ["page_id", "command"],
														"description": "The parameters for the update_page tool. Update a Notion page's properties, content, icon, or cover.\n\t\tFor only an icon or cover, use \"update_properties\" without \"properties\".\n\n\t\t## Core rules\n\n\t\t**IMPORTANT**: Before writing page content, read the MCP resource `notion://docs/enhanced-markdown-spec` through your MCP client's resource-reading interface, or call the Notion \"fetch\" tool with this URI if your client does not support reading MCP resources. Do NOT pass this URI to any other URL-fetching tool.\n\t\tDon't guess Markdown syntax. By default, use native Notion mentions for references you add to existing Notion pages,\n\t\tdatabases, data sources, people, and dates. Use Markdown links only for external URLs or when\n\t\tthe user requests a plain link. For a person, use a user mention with their user URL, found with\n\t\tsearch using query_type \"user\"; do not write \"@Name\" as plain text. For a specific date or time,\n\t\tsuch as a due date or meeting time, use a date mention. The Markdown specification gives the\n\t\tmention syntax.\n\n\t\tBefore changing content, fetch unless already loaded. Match nearby headings, block types,\n\t\tnesting, lists, tables, and prose style.\n\n\t\tMake the smallest edit. Use \"update_content\" for targeted search-and-replace and\n\t\t\"insert_content\" only to prepend or append. Avoid \"replace_content\" when a\n\t\ttargeted command works. Preserve unrelated wording, structure, order, and native references.\n\t\tDo not broadly rewrite unless asked.\n\n\t\tFor \"update_content\", use the smallest exact old_str that uniquely matches the target.\n\t\tAsk before removing material content the user did not identify. After a multi-part or structural edit, fetch the page again and\n\t\tverify the requested content and nesting. Skip this extra read for a simple exact edit.\n\n\t\tFor \"replace_content\", preserve child pages and databases with their exact fetched tags.\n\t\tIf validation says child content would be deleted, show the list and ask first.\n\t\tNever retry with \"allow_deleting_content\": true without confirmation.\n\t\tReport any \"warnings\" in the result."
													}
												},
												"required": ["type", "update_page"],
												"title": "Update Page"
											},
											{
												"type": "object",
												"properties": {
													"type": {
														"type": "string",
														"const": "delete_pages",
														"description": "The name of the tool to run."
													},
													"delete_pages": {
														"type": "object",
														"properties": {
															"page_ids": {
																"type": "array",
																"items": {
																	"type": "string"
																},
																"maxItems": 20,
																"minItems": 1,
																"description": "IDs of the pages to move to Trash, 1 to 20. Database rows are pages. Duplicate IDs are processed once."
															},
															"user_confirmed": {
																"type": "boolean",
																"description": "Set to true only after the user explicitly asked to delete these exact pages, or confirmed after you showed them the list. If omitted or false, nothing is trashed and the error lists what would be moved to Trash so you can confirm with the user."
															}
														},
														"additionalProperties": false,
														"required": ["page_ids"],
														"description": "The parameters for the delete_pages tool. Move Notion pages to Trash. They can be restored with the restore_pages tool or from Trash in Notion. Database rows are pages. To move a database to Trash, use delete_databases. To remove content inside a page, use update_page instead. Use this tool only when the user explicitly asks to delete specific pages. Never use it on your own initiative to clean up, deduplicate, or reorganize content. Without user_confirmed: true, nothing is trashed and the error lists what would be moved to Trash; show that list to the user and retry only after they confirm."
													}
												},
												"required": ["type", "delete_pages"],
												"title": "Delete Pages"
											},
											{
												"type": "object",
												"properties": {
													"type": {
														"type": "string",
														"const": "delete_databases",
														"description": "The name of the tool to run."
													},
													"delete_databases": {
														"type": "object",
														"properties": {
															"database_ids": {
																"type": "array",
																"items": {
																	"type": "string"
																},
																"maxItems": 20,
																"minItems": 1,
																"description": "IDs of the databases to move to Trash, 1 to 20. Each must be a full-page or inline database that owns its data, not a linked view. Duplicate IDs are processed once."
															},
															"user_confirmed": {
																"type": "boolean",
																"description": "Set to true only after the user explicitly asked to delete these exact databases, or confirmed after you showed them the list. If omitted or false, nothing is trashed and the error lists what would be moved to Trash so you can confirm with the user."
															}
														},
														"additionalProperties": false,
														"required": ["database_ids"],
														"description": "The parameters for the delete_databases tool. Move Notion databases to Trash. They can be restored with the restore_pages tool or from Trash in Notion. Each database goes to Trash with all of its rows. Pass a full-page or inline database that owns its data, not a linked view. To move a page or database row to Trash, use delete_pages. Use this tool only when the user explicitly asks to delete specific databases. Never use it on your own initiative to clean up, deduplicate, or reorganize content. Without user_confirmed: true, nothing is trashed and the error lists what would be moved to Trash; show that list to the user and retry only after they confirm."
													}
												},
												"required": ["type", "delete_databases"],
												"title": "Delete Databases"
											},
											{
												"type": "object",
												"properties": {
													"type": {
														"type": "string",
														"const": "restore_pages",
														"description": "The name of the tool to run."
													},
													"restore_pages": {
														"type": "object",
														"properties": {
															"page_ids": {
																"type": "array",
																"items": {
																	"type": "string"
																},
																"maxItems": 20,
																"minItems": 1,
																"description": "IDs of 1 to 20 pages or databases in Trash. Database rows are pages. Duplicate IDs are restored once."
															}
														},
														"additionalProperties": false,
														"required": ["page_ids"],
														"description": "The parameters for the restore_pages tool. Restore Notion pages or databases from Trash to where they were before they were deleted. Use this when the user asks to undo a deletion or to restore something from Trash. Database rows are pages. Restoring something that is already out of Trash succeeds and changes nothing. To restore a page whose parent is in Trash, restore the parent."
													}
												},
												"required": ["type", "restore_pages"],
												"title": "Restore Pages"
											},
											{
												"type": "object",
												"properties": {
													"type": {
														"type": "string",
														"const": "convert_page_to_skill",
														"description": "The name of the tool to run."
													},
													"convert_page_to_skill": {
														"type": "object",
														"properties": {
															"page_url": {
																"type": "string",
																"minLength": 1,
																"maxLength": 2000,
																"format": "uri",
																"description": "The full Notion URL of the page to mark as a skill."
															}
														},
														"required": ["page_url"],
														"description": "The parameters for the convert_page_to_skill tool. Mark an existing Notion page as a skill without changing its content. The page must be in the current workspace, and the authenticated user must have permission to edit it. Use this tool only when the user wants the page's current contents designated as a skill.\n\nIf availability is not already known for this connection, call get_tool_access with {} before using this tool. Reuse the returned access map across tools; check the status and restricted_parameters."
													}
												},
												"required": ["type", "convert_page_to_skill"],
												"title": "Convert Page To Skill"
											},
											{
												"type": "object",
												"properties": {
													"type": {
														"type": "string",
														"const": "get_enabled_skills",
														"description": "The name of the tool to run."
													},
													"get_enabled_skills": {
														"type": "object",
														"properties": {},
														"additionalProperties": false,
														"description": "The parameters for the get_enabled_skills tool. Use this tool to view the Notion skills the user has enabled for you and other external MCP clients, each with a name and a description of when it should be used. If you choose to use one of these skills, mention to the user that you are loading the skill from Notion first, then download them."
													}
												},
												"required": ["type", "get_enabled_skills"],
												"title": "Get Enabled Skills"
											},
											{
												"type": "object",
												"properties": {
													"type": {
														"type": "string",
														"const": "update_skill_settings",
														"description": "The name of the tool to run."
													},
													"update_skill_settings": {
														"type": "object",
														"required": ["skill_url", "settings"],
														"additionalProperties": false,
														"properties": {
															"skill_url": {
																"type": "string",
																"description": "The URL of an existing Notion Skill in the current workspace."
															},
															"settings": {
																"type": "object",
																"additionalProperties": false,
																"properties": {
																	"enabled": {
																		"type": "boolean",
																		"description": "Enable or disable this Skill in Notion Agent. Disabling also clears placements and connected-agent use."
																	},
																	"use_automatically": {
																		"type": "boolean",
																		"description": "Allow agents to use this enabled Skill automatically when relevant. Set false to require explicit invocation without disabling the Skill or changing its placements."
																	},
																	"use_in_connected_agents": {
																		"type": "boolean",
																		"description": "Make this Skill available to agents connected over MCP, independently of its Notion Agent installation. Requires a non-empty Skill description."
																	},
																	"show_in_chat": {
																		"type": "boolean",
																		"description": "Show this enabled Skill in the Agent chat menu."
																	},
																	"show_in_editor": {
																		"type": "boolean",
																		"description": "Show this enabled Skill in the text selection menu."
																	},
																	"show_during_meetings": {
																		"type": "boolean",
																		"description": "Show this enabled Skill during AI meeting notes."
																	},
																	"show_after_meetings": {
																		"type": "boolean",
																		"description": "Show this enabled Skill after AI meeting notes."
																	}
																},
																"description": "Change only the provided settings. Automatic use and placements require enabling the Skill first or in this request. Connected-agent use is independent of Notion Agent installation. Disabling the Skill also clears connected-agent use."
															}
														},
														"description": "The parameters for the update_skill_settings tool. Update the current user's settings for one Notion Skill. Enable or disable the Skill, control automatic use, configure where it is shown, or enable use in connected MCP agents. Omitted settings remain unchanged. This does not run the Skill."
													}
												},
												"required": ["type", "update_skill_settings"],
												"title": "Update Skill Settings"
											},
											{
												"type": "object",
												"properties": {
													"type": {
														"type": "string",
														"const": "update_enabled_skills",
														"description": "The name of the tool to run."
													},
													"update_enabled_skills": {
														"type": "object",
														"additionalProperties": false,
														"properties": {
															"add_skill_urls": {
																"type": "array",
																"maxItems": 50,
																"uniqueItems": true,
																"items": {
																	"type": "string",
																	"description": "A Notion Skill page URL."
																},
																"description": "Notion Skill page URLs to enable for the current user on every surface."
															},
															"remove_skill_urls": {
																"type": "array",
																"maxItems": 50,
																"uniqueItems": true,
																"items": {
																	"type": "string",
																	"description": "A Notion Skill page URL."
																},
																"description": "Notion Skill page URLs to turn off on the requested surfaces."
															},
															"surfaces": {
																"type": "array",
																"maxItems": 2,
																"items": {
																	"type": "string",
																	"enum": ["mcp", "notion_ai"]
																},
																"description": "Surfaces to turn remove_skill_urls off for. Defaults to both external MCP and Notion AI. Does not apply to add_skill_urls."
															}
														},
														"description": "The parameters for the update_enabled_skills tool. Enable Notion Skills for the current user, or turn them off for external MCP clients, Notion AI, or both. Adding a Skill URL enables it for the user on every surface. Removing one turns it off for the requested surfaces, which default to both. Changes only the current user's Skill settings."
													}
												},
												"required": ["type", "update_enabled_skills"],
												"title": "Update Enabled Skills"
											},
											{
												"type": "object",
												"properties": {
													"type": {
														"type": "string",
														"const": "get_mcp_search_access",
														"description": "The name of the tool to run."
													},
													"get_mcp_search_access": {
														"type": "object",
														"properties": {},
														"additionalProperties": false,
														"description": "The parameters for the get_mcp_search_access tool. Reports the session access hosted MCP uses to choose its tools and instructions. For search: the user's AI search access for this workspace and, with access in the split-search cohort, whether the workspace has a connected source. For memories: whether memory tools are listed, and which setting turned them off. For the ChatGPT page editor: whether its tools are registered. The hosted MCP server calls this when a session starts; it is not registered as a client-facing MCP tool, so its calls stay separate from get_tool_access usage."
													}
												},
												"required": ["type", "get_mcp_search_access"],
												"title": "Get Mcp Search Access"
											},
											{
												"type": "object",
												"properties": {
													"type": {
														"type": "string",
														"const": "move_pages",
														"description": "The name of the tool to run."
													},
													"move_pages": {
														"type": "object",
														"properties": {
															"page_or_database_ids": {
																"type": "array",
																"items": {
																	"type": "string"
																},
																"maxItems": 100,
																"minItems": 1,
																"description": "An array of up to 100 page or database IDs to move. IDs are v4 UUIDs and can be supplied with or without dashes (e.g. extracted from a <page> or <database> URL given by the \"search\" or \"fetch\" tool). Data Sources under Databases can't be moved individually."
															},
															"new_parent": {
																"oneOf": [
																	{
																		"type": "object",
																		"properties": {
																			"page_id": {
																				"type": "string",
																				"description": "The ID of the parent page (with or without dashes), for example, 195de9221179449fab8075a27c979105"
																			},
																			"type": {
																				"type": "string",
																				"const": "page_id",
																				"description": "Always `page_id`"
																			}
																		},
																		"required": ["page_id"]
																	},
																	{
																		"type": "object",
																		"properties": {
																			"database_id": {
																				"type": "string",
																				"description": "The ID of the parent database (with or without dashes), for example, 195de9221179449fab8075a27c979105"
																			},
																			"type": {
																				"type": "string",
																				"const": "database_id",
																				"description": "Always `database_id`"
																			}
																		},
																		"required": ["database_id"]
																	},
																	{
																		"type": "object",
																		"properties": {
																			"data_source_id": {
																				"type": "string",
																				"description": "The ID of the parent data source (collection), with or without dashes. For example, f336d0bc-b841-465b-8045-024475c079dd"
																			},
																			"type": {
																				"type": "string",
																				"const": "data_source_id",
																				"description": "Always `data_source_id`"
																			}
																		},
																		"required": ["data_source_id"]
																	},
																	{
																		"type": "object",
																		"properties": {
																			"type": {
																				"type": "string",
																				"const": "workspace",
																				"description": "The parent type."
																			}
																		},
																		"required": ["type"]
																	}
																],
																"description": "The new parent under which the pages will be moved. This can be a page, the workspace, a database, or a specific data source under a database when there are multiple. Moving pages to the workspace level adds them as private pages and should rarely be used."
															}
														},
														"required": ["page_or_database_ids", "new_parent"],
														"description": "The parameters for the move_pages tool. Move one or more Notion pages or databases to a new parent."
													}
												},
												"required": ["type", "move_pages"],
												"title": "Move Pages"
											},
											{
												"type": "object",
												"properties": {
													"type": {
														"type": "string",
														"const": "create_folder",
														"description": "The name of the tool to run."
													},
													"create_folder": {
														"type": "object",
														"properties": {
															"parent": {
																"oneOf": [
																	{
																		"type": "object",
																		"properties": {
																			"page_id": {
																				"type": "string",
																				"description": "The ID of the page that will own the Folder."
																			}
																		},
																		"additionalProperties": false,
																		"required": ["page_id"]
																	},
																	{
																		"type": "object",
																		"properties": {
																			"folder_id": {
																				"type": "string",
																				"description": "The ID of the Folder that will contain the new Folder."
																			}
																		},
																		"additionalProperties": false,
																		"required": ["folder_id"]
																	}
																],
																"description": "Where to create the Folder."
															},
															"title": {
																"type": "string",
																"description": "The title of the new Folder."
															}
														},
														"required": ["parent", "title"],
														"description": "The parameters for the create_folder tool. Creates an empty Notion Folder. Set parent.page_id for a top-level Folder owned\nby a page, or parent.folder_id to create a nested Folder inside another Folder.\nA page-owned Folder is not inserted into the page's content. A nested Folder is\nappended to its parent Folder's content. The Folder inherits access from its\nparent.\n\nThis tool creates only the empty Folder. It is non-idempotent and creates a new\nFolder on every successful call."
													}
												},
												"required": ["type", "create_folder"],
												"title": "Create Folder"
											},
											{
												"type": "object",
												"properties": {
													"type": {
														"type": "string",
														"const": "update_folder",
														"description": "The name of the tool to run."
													},
													"update_folder": {
														"type": "object",
														"properties": {
															"folder_id": {
																"type": "string",
																"description": "The ID of the Folder to update."
															},
															"command": {
																"type": "string",
																"enum": [
																	"add_files",
																	"remove_files",
																	"add_subfolder"
																],
																"description": "The Folder update to apply."
															},
															"file_upload_ids": {
																"type": "array",
																"items": {
																	"type": "string"
																},
																"maxItems": 100,
																"minItems": 1,
																"uniqueItems": true,
																"description": "Required for add_files. One or more file upload IDs returned by the file upload tools."
															},
															"file_urls": {
																"type": "array",
																"items": {
																	"type": "string"
																},
																"maxItems": 100,
																"minItems": 1,
																"uniqueItems": true,
																"description": "Required for remove_files. The exact file URLs shown in the Folder's latest fetch output."
															},
															"title": {
																"type": "string",
																"description": "Required for add_subfolder. The new Folder's title."
															}
														},
														"additionalProperties": false,
														"required": ["folder_id", "command"],
														"description": "The parameters for the update_folder tool. Update an existing Notion Folder with an explicit Folder operation.\n\n- Use add_files with file upload IDs returned by the upload tools.\n- Fetch the Folder first, then use remove_files with the exact file URLs from\n  that fetch result.\n- Use add_subfolder to create and insert a new nested Folder.\n\nUse exactly one command shape; do not mix their arguments:\n- {\"command\":\"add_files\",\"file_upload_ids\":[\"...\"]}\n- {\"command\":\"remove_files\",\"file_urls\":[\"...\"]}\n- {\"command\":\"add_subfolder\",\"title\":\"...\"}\n\nThe Folder ID may be provided with or without dashes."
													}
												},
												"required": ["type", "update_folder"],
												"title": "Update Folder"
											},
											{
												"type": "object",
												"properties": {
													"type": {
														"type": "string",
														"const": "create_comment",
														"description": "The name of the tool to run."
													},
													"create_comment": {
														"allOf": [
															{
																"type": "object",
																"properties": {
																	"page_id": {
																		"type": "string",
																		"description": "The page ID, with or without dashes, or a Notion page URL."
																	},
																	"reply_to_comment_id": {
																		"type": "string",
																		"description": "The ID of the comment to reply to."
																	},
																	"discussion_id": {
																		"type": "string",
																		"description": "The ID or URL of an existing discussion to reply to (e.g., discussion://pageId/blockId/discussionId)."
																	},
																	"selection_with_ellipsis": {
																		"type": "string",
																		"description": "Unique content snippet: ~10 characters from each end, joined by \"...\". A match within one block's text gets an inline comment on that text; otherwise, comment on the block where the match starts. No match returns an error."
																	}
																},
																"required": ["page_id"]
															},
															{
																"oneOf": [
																	{
																		"type": "object",
																		"properties": {
																			"rich_text": {
																				"type": "array",
																				"items": {
																					"$ref": "#/components/schemas/richTextItemRequest"
																				},
																				"maxItems": 100,
																				"description": "An array of rich text objects that represent the content of the comment. Provide exactly one of rich_text or markdown."
																			}
																		},
																		"required": ["rich_text"]
																	},
																	{
																		"type": "object",
																		"properties": {
																			"markdown": {
																				"type": "string",
																				"description": "The content of the comment as a Markdown string. Provide exactly one of markdown or rich_text. For exact syntax, read the MCP resource `notion://docs/enhanced-markdown-spec` through your MCP client's resource-reading interface, or call the Notion \"fetch\" tool with this URI if your client does not support reading MCP resources. Do NOT pass this URI to any other URL-fetching tool. Use only the Rich text types and Mentions syntax that comments support. Comments support inline formatting (bold, italic, strikethrough, underline, code, links), inline math using $`Equation`$, and user/page/database/date mention tags such as <mention-date start=\"YYYY-MM-DD\"/>. To attach a file created by create-file-upload or create-attachment, include its returned suggested_markdown on a separate line; up to three file attachments are supported. Do not use UI shortcuts like @today, @name, [[page]], or autocomplete-style emoji syntax; those are editor affordances, not markdown syntax. Mention tags must include a real url where required by the spec. Other block-level Markdown such as fenced code blocks, headings, lists, tables, and blockquotes is stored as plain comment text rather than rendered as blocks. Example: <example>Looks good.</example>."
																			}
																		},
																		"required": ["markdown"]
																	}
																]
															}
														],
														"description": "The parameters for the create_comment tool. Add a comment to a page or specific content.\n\nProvide `page_id` to identify the page, then choose ONE targeting mode:\n- `page_id` alone: Add a top-level comment to the page\n- `page_id` + `selection_with_ellipsis`: Highlight selected text within one block, or comment on the block where the match starts if no inline highlight can be resolved. No matching content returns an error.\n- `reply_to_comment_id`: Reply to a comment using its `id` from get-comments (page_id is still required)\n- `discussion_id`: Reply to an existing discussion (page_id is still required)\n\nProvide exactly one content format:\n- `markdown`: Preferred. Inline Notion-flavored Markdown for comment text. For exact syntax, read the MCP resource `notion://docs/enhanced-markdown-spec` through your MCP client's resource-reading interface, or call the Notion \"fetch\" tool with this URI if your client does not support reading MCP resources. Do NOT pass this URI to any other URL-fetching tool. Use only the Rich text types and Mentions syntax that comments support. Comments support inline formatting (bold, italic, strikethrough, underline, code, links), inline math using `$`Equation`$`, and user/page/database/date mention tags such as `<mention-date start=\"YYYY-MM-DD\"/>`. To attach a file created by `create-file-upload` or `create-attachment`, include its returned `suggested_markdown` on a separate line; up to three file attachments are supported. Do not use UI shortcuts like `@today`, `@name`, `[[page]]`, or autocomplete-style emoji syntax; those are editor affordances, not markdown syntax. Mention tags must include a real `url` where required by the spec. Other block-level Markdown such as headings, lists, tables, blockquotes, and fenced code blocks is stored as plain comment text rather than rendered as blocks.\n- `rich_text`: Array of rich text objects."
													}
												},
												"required": ["type", "create_comment"],
												"title": "Create Comment"
											},
											{
												"type": "object",
												"properties": {
													"type": {
														"type": "string",
														"const": "get_comments",
														"description": "The name of the tool to run."
													},
													"get_comments": {
														"type": "object",
														"properties": {
															"page_id": {
																"type": "string",
																"description": "The page ID, with or without dashes, or a Notion page URL."
															},
															"include_resolved": {
																"type": "boolean",
																"description": "Include resolved discussions in the response. Defaults to false."
															},
															"include_all_blocks": {
																"type": "boolean",
																"description": "Include discussions on child blocks, not just page-level discussions. Defaults to false."
															},
															"discussion_id": {
																"type": "string",
																"description": "Fetch a specific discussion by ID or discussion URL (e.g., discussion://pageId/blockId/discussionId)."
															}
														},
														"required": ["page_id"],
														"description": "The parameters for the get_comments tool. Get comments and discussions from a Notion page.\n\nReturns discussions with full comment content in XML format.\nBy default, returns page-level discussions only.\nOn supported Business connections, pending suggested edits use `kind=\"suggested_edit\"` and their\n`discussion://` URL can be passed to `get_suggested_edit`. Resolved suggestions stay retired.\nCheck `suggested_edits_status` to distinguish an empty result from unavailable suggestion discovery.\nComments you wrote have `by-you=\"true\"`.\n\nTip: Use the `fetch` tool with `include_discussions: true` first to see where discussions\nare anchored in the page content, then use this tool to retrieve full discussion threads.\nThe `discussion://` URLs in the fetch output match the discussion IDs returned here.\n\nParameters:\n- `include_all_blocks`: Include discussions on child blocks (default: false)\n- `include_resolved`: Include resolved discussions (default: false)\n- `discussion_id`: Fetch a specific discussion by ID or URL\n\n<example>{\"page_id\": \"page-uuid\"}</example>\n<example>{\"page_id\": \"page-uuid\", \"include_all_blocks\": true}</example>\n<example>{\"page_id\": \"page-uuid\", \"discussion_id\": \"discussion://pageId/blockId/discussionId\"}</example>"
													}
												},
												"required": ["type", "get_comments"],
												"title": "Get Comments"
											},
											{
												"type": "object",
												"properties": {
													"type": {
														"type": "string",
														"const": "update_comment",
														"description": "The name of the tool to run."
													},
													"update_comment": {
														"type": "object",
														"properties": {
															"comment_id": {
																"type": "string",
																"description": "The comment ID, with or without dashes. Use the id of a <comment> from get_comments, or the id returned by create_comment."
															},
															"markdown": {
																"type": "string",
																"description": "The full replacement text for the comment, as inline Markdown. It replaces the whole comment, so include any text you want to keep. Use the same inline syntax as create_comment. Lists, headings, and other block-level Markdown are not supported in comments."
															}
														},
														"additionalProperties": false,
														"required": ["comment_id", "markdown"],
														"description": "The parameters for the update_comment tool. Replace the text of a comment you wrote. Get the comment ID from get_comments or create_comment. The new text replaces the whole comment, so send the full corrected text. To fix a comment, update it instead of deleting it and posting a new one. You can only edit your own comments."
													}
												},
												"required": ["type", "update_comment"],
												"title": "Update Comment"
											},
											{
												"type": "object",
												"properties": {
													"type": {
														"type": "string",
														"const": "delete_comment",
														"description": "The name of the tool to run."
													},
													"delete_comment": {
														"type": "object",
														"properties": {
															"comment_id": {
																"type": "string",
																"description": "The comment ID, with or without dashes. Use the id of a <comment> from get_comments, or the id returned by create_comment."
															}
														},
														"additionalProperties": false,
														"required": ["comment_id"],
														"description": "The parameters for the delete_comment tool. Delete a comment you wrote. Get the comment ID from get_comments or create_comment. If it is the last comment in its discussion, the discussion is removed too. Use this only when the user asks to delete a comment; to fix a comment, use update_comment instead. You can only delete your own comments."
													}
												},
												"required": ["type", "delete_comment"],
												"title": "Delete Comment"
											},
											{
												"type": "object",
												"properties": {
													"type": {
														"type": "string",
														"const": "set_discussion_resolved",
														"description": "The name of the tool to run."
													},
													"set_discussion_resolved": {
														"type": "object",
														"properties": {
															"discussion_id": {
																"type": "string",
																"description": "The discussion ID or URL, such as the id of a <discussion> from get_comments (discussion://pageId/blockId/discussionId) or the discussion_id returned by create_comment."
															},
															"resolved": {
																"type": "boolean",
																"description": "True to resolve the discussion, false to reopen it."
															}
														},
														"additionalProperties": false,
														"required": ["discussion_id", "resolved"],
														"description": "The parameters for the set_discussion_resolved tool. Resolve or reopen a comment discussion. Get the discussion ID from get_comments or create_comment. Use this tool only when a human explicitly asks to resolve that discussion. Do not infer resolution from addressing feedback, replying, completing related work, passing checks, or changing task status."
													}
												},
												"required": ["type", "set_discussion_resolved"],
												"title": "Set Discussion Resolved"
											},
											{
												"type": "object",
												"properties": {
													"type": {
														"type": "string",
														"const": "set_comment_reaction",
														"description": "The name of the tool to run."
													},
													"set_comment_reaction": {
														"type": "object",
														"properties": {
															"comment_id": {
																"type": "string",
																"description": "The comment ID, with or without dashes. Use the id of a <comment> from get_comments, or the id returned by create_comment."
															},
															"emoji": {
																"type": "string",
																"examples": ["👍"],
																"description": "One standard Unicode emoji."
															},
															"reacted": {
																"type": "boolean",
																"description": "True to add the reaction, false to remove it."
															}
														},
														"additionalProperties": false,
														"required": ["comment_id", "emoji", "reacted"],
														"description": "The parameters for the set_comment_reaction tool. Add or remove your emoji reaction on a comment. Get the comment ID from get_comments or create_comment. Safe to repeat: setting the same state twice changes nothing."
													}
												},
												"required": ["type", "set_comment_reaction"],
												"title": "Set Comment Reaction"
											},
											{
												"type": "object",
												"properties": {
													"type": {
														"type": "string",
														"const": "create_suggested_edit",
														"description": "The name of the tool to run."
													},
													"create_suggested_edit": {
														"type": "object",
														"required": ["page_id", "old_text", "new_text"],
														"additionalProperties": false,
														"properties": {
															"page_id": {
																"type": "string",
																"description": "Page UUID or URL containing the target text."
															},
															"old_text": {
																"type": "string",
																"description": "Unique, non-empty exact text copied from the accepted Notion Markdown returned by fetch."
															},
															"new_text": {
																"type": "string",
																"description": "Proposed Notion Markdown. With replace, it replaces old_text; use an empty string to suggest deletion. With insert_before or insert_after, it is only the text to insert and old_text remains unchanged."
															},
															"mode": {
																"type": "string",
																"enum": [
																	"replace",
																	"insert_before",
																	"insert_after"
																],
																"description": "How to apply new_text relative to old_text. Defaults to replace."
															},
															"property_name": {
																"type": "string",
																"description": "Exact page title or database title/text property name. Omit for page body text."
															},
															"comment": {
																"type": "string",
																"description": "Optional inline Markdown comment that starts the suggestion thread."
															}
														},
														"description": "The parameters for the create_suggested_edit tool. Propose one precise, reviewable change without changing accepted page content. Copy old_text exactly from fetch, use one suggestion per localized change, and use get_suggested_edit to inspect it before any later resolution.\n\nIf availability is not already known for this connection, call get_tool_access with {} before using this tool. Reuse the returned access map across tools; check the status and restricted_parameters."
													}
												},
												"required": ["type", "create_suggested_edit"],
												"title": "Create Suggested Edit"
											},
											{
												"type": "object",
												"properties": {
													"type": {
														"type": "string",
														"const": "get_suggested_edit",
														"description": "The name of the tool to run."
													},
													"get_suggested_edit": {
														"type": "object",
														"required": ["suggested_edit_url"],
														"additionalProperties": false,
														"properties": {
															"suggested_edit_url": {
																"type": "string",
																"description": "Pending suggested-edit discussion URL returned by get_comments or create_suggested_edit."
															}
														},
														"description": "The parameters for the get_suggested_edit tool. Read the exact before-and-after diff and currently allowed actions for one pending suggested edit. Call this before deciding whether to accept or reject it.\n\nIf availability is not already known for this connection, call get_tool_access with {} before using this tool. Reuse the returned access map across tools; check the status and restricted_parameters."
													}
												},
												"required": ["type", "get_suggested_edit"],
												"title": "Get Suggested Edit"
											},
											{
												"type": "object",
												"properties": {
													"type": {
														"type": "string",
														"const": "resolve_suggested_edit",
														"description": "The name of the tool to run."
													},
													"resolve_suggested_edit": {
														"type": "object",
														"required": ["suggested_edit_url", "action"],
														"additionalProperties": false,
														"properties": {
															"suggested_edit_url": {
																"type": "string",
																"description": "Pending suggested-edit discussion URL returned by get_comments or create_suggested_edit."
															},
															"action": {
																"type": "string",
																"enum": ["accept", "reject"],
																"description": "Whether to apply or discard the suggestion."
															}
														},
														"description": "The parameters for the resolve_suggested_edit tool. Accept or reject one pending suggested edit. Use the exact suggested_edit_url, inspect it with get_suggested_edit first, and call this only after the user explicitly chooses accept or reject.\n\nIf availability is not already known for this connection, call get_tool_access with {} before using this tool. Reuse the returned access map across tools; check the status and restricted_parameters."
													}
												},
												"required": ["type", "resolve_suggested_edit"],
												"title": "Resolve Suggested Edit"
											},
											{
												"type": "object",
												"properties": {
													"type": {
														"type": "string",
														"const": "get_formula_value",
														"description": "The name of the tool to run."
													},
													"get_formula_value": {
														"type": "object",
														"properties": {
															"page_url": {
																"type": "string",
																"description": "URL of the database row page that has the formula property."
															},
															"property_name": {
																"type": "string",
																"description": "Name of the formula property to evaluate."
															}
														},
														"additionalProperties": false,
														"required": ["page_url", "property_name"],
														"description": "The parameters for the get_formula_value tool. Get the computed value of a formula property for a specific Notion database row page.\n\nIf availability is not already known for this connection, call get_tool_access with {} before using this tool. Reuse the returned access map across tools; check the status and restricted_parameters."
													}
												},
												"required": ["type", "get_formula_value"],
												"title": "Get Formula Value"
											},
											{
												"type": "object",
												"properties": {
													"type": {
														"type": "string",
														"const": "get_rollup_value",
														"description": "The name of the tool to run."
													},
													"get_rollup_value": {
														"type": "object",
														"properties": {
															"url": {
																"type": "string",
																"description": "Rollup-result reference returned on a database row page."
															},
															"page_size": {
																"type": "integer",
																"minimum": 1,
																"maximum": 100,
																"description": "Maximum number of related rows in one result window."
															},
															"start_cursor": {
																"type": "string",
																"description": "Opaque cursor returned by an earlier call."
															}
														},
														"additionalProperties": false,
														"required": ["url"],
														"description": "The parameters for the get_rollup_value tool. Resolve a rollup-result reference into its complete, permission-aware computed value.\n\nIf availability is not already known for this connection, call get_tool_access with {} before using this tool. Reuse the returned access map across tools; check the status and restricted_parameters."
													}
												},
												"required": ["type", "get_rollup_value"],
												"title": "Get Rollup Value"
											},
											{
												"type": "object",
												"properties": {
													"type": {
														"type": "string",
														"const": "get_notifications",
														"description": "The name of the tool to run."
													},
													"get_notifications": {
														"type": "object",
														"properties": {
															"filter": {
																"type": "string",
																"enum": [
																	"archived",
																	"unread_and_read",
																	"unread_only"
																],
																"description": "Which notifications to return."
															},
															"limit": {
																"type": "number",
																"description": "Maximum number of notifications to return. Defaults to 20 and is capped at 100."
															},
															"cursor": {
																"type": "string",
																"description": "Pagination cursor from a previous response."
															},
															"after": {
																"type": "number",
																"minimum": 0,
																"description": "Return notifications strictly after this Unix timestamp in milliseconds."
															},
															"before": {
																"type": "number",
																"minimum": 0,
																"description": "Return notifications strictly before this Unix timestamp in milliseconds."
															}
														},
														"additionalProperties": false,
														"description": "The parameters for the get_notifications tool. Read the current user's Notion notifications, returned newest first.\n\nIf availability is not already known for this connection, call get_tool_access with {} before using this tool. Reuse the returned access map across tools; check the status and restricted_parameters."
													}
												},
												"required": ["type", "get_notifications"],
												"title": "Get Notifications"
											},
											{
												"type": "object",
												"properties": {
													"type": {
														"type": "string",
														"const": "get_async_task",
														"description": "The name of the tool to run."
													},
													"get_async_task": {
														"type": "object",
														"properties": {
															"task_id": {
																"type": "string",
																"minLength": 1,
																"examples": ["task_abc123"],
																"description": "The ID of the async task to retrieve, as returned in the async_task response of the tool that started it."
															}
														},
														"required": ["task_id"],
														"description": "The parameters for the get_async_task tool. Retrieves the current status of an async task that was started by another tool\n(for example, \"create_pages\" called with \"allow_async\": true).\n\nThe status is one of \"queued\", \"running\", \"retrying\", \"succeeded\", or \"failed\".\nWhen the task has succeeded, the operation's result is included; when it has\nfailed, an error is included instead.\n\nPoll this tool with the \"task_id\" from the original tool's \"async_task\" response.\nWait briefly between polls — the original response includes a suggested backoff.\n\n<examples>\n1. Check a task's status: {\"task_id\": \"task_abc123\"}\n</examples>"
													}
												},
												"required": ["type", "get_async_task"],
												"title": "Get Async Task"
											},
											{
												"type": "object",
												"properties": {
													"type": {
														"type": "string",
														"const": "get_teams",
														"description": "The name of the tool to run."
													},
													"get_teams": {
														"type": "object",
														"properties": {
															"query": {
																"type": "string",
																"minLength": 1,
																"maxLength": 100,
																"description": "Optional search query to filter teams by name (case-insensitive)."
															}
														},
														"description": "The parameters for the get_teams tool. Retrieves a list of teams (teamspaces) in the current workspace. Shows which teams\nexist, user membership status, IDs, names, and roles.\n\nTeams are returned split by membership status and limited to a maximum of\n10 results.\n\n<examples>\n1. List all teams (up to the limit of each type): {}\n\n2. Search for teams by name: {\"query\": \"engineering\"}\n\n3. Find a specific team: {\"query\": \"Product Design\"}\n</examples>"
													}
												},
												"required": ["type", "get_teams"],
												"title": "Get Teams"
											},
											{
												"type": "object",
												"properties": {
													"type": {
														"type": "string",
														"const": "get_groups",
														"description": "The name of the tool to run."
													},
													"get_groups": {
														"type": "object",
														"properties": {
															"query": {
																"type": "string",
																"minLength": 1,
																"maxLength": 100,
																"description": "Optional group name to search for (case-insensitive), or a group ID from a People property value (`space_permission_group-<id>` or the bare ID) to look up that group."
															}
														},
														"additionalProperties": false,
														"description": "The parameters for the get_groups tool. Retrieves permission groups in the current workspace that you can see, with their\nIDs and names.\n\nPeople properties reference a group as `space_permission_group-<id>`. Use this tool\nto find the name of a group in a People property value, or to find a group by name\nbefore setting it in a People property.\n\nListings are sorted by name and searches return the closest matches first. Results\nare limited to a maximum of 25 groups.\n\n<examples>\n1. List groups (up to the limit): {}\n\n2. Search for groups by name: {\"query\": \"engineering\"}\n\n3. Look up a group from a People property value: {\"query\": \"space_permission_group-141083e9-5e66-4c8f-8a38-bce5762903c2\"}\n</examples>"
													}
												},
												"required": ["type", "get_groups"],
												"title": "Get Groups"
											},
											{
												"type": "object",
												"properties": {
													"type": {
														"type": "string",
														"const": "get_users",
														"description": "The name of the tool to run."
													},
													"get_users": {
														"type": "object",
														"properties": {
															"query": {
																"type": "string",
																"minLength": 1,
																"maxLength": 100,
																"description": "Optional search query to filter users by name or email (case-insensitive)."
															},
															"start_cursor": {
																"type": "string",
																"minLength": 1,
																"description": "Cursor for pagination. Use the next_cursor value from the previous response to get the next page."
															},
															"page_size": {
																"type": "integer",
																"minimum": 1,
																"maximum": 100,
																"description": "Number of users to return per page (1–100; default 100)."
															},
															"user_id": {
																"type": "string",
																"minLength": 1,
																"maxLength": 100,
																"description": "Return only the user matching this ID. Pass \"self\" to fetch the current user."
															}
														},
														"description": "The parameters for the get_users tool. Retrieves a list of users in the current workspace. Shows workspace members\nand guests with their IDs, names, emails (if available), and types (person or bot).\n\nSupports cursor-based pagination to iterate through all users in the workspace.\n\n<examples>\n1. List all users (first page): {}\n\n2. Search for users by name or email: {\"query\": \"john\"}\n\n3. Get next page of results: {\"start_cursor\": \"abc123\"}\n\n4. Set custom page size: {\"page_size\": 20}\n\n5. Fetch a specific user by ID: {\"user_id\": \"00000000-0000-4000-8000-000000000000\"}\n\n6. Fetch the current user: {\"user_id\": \"self\"}\n</examples>"
													}
												},
												"required": ["type", "get_users"],
												"title": "Get Users"
											},
											{
												"type": "object",
												"properties": {
													"type": {
														"type": "string",
														"const": "query_data_sources",
														"description": "The name of the tool to run."
													},
													"query_data_sources": {
														"type": "object",
														"properties": {
															"data": {
																"oneOf": [
																	{
																		"type": "object",
																		"properties": {
																			"data_source_urls": {
																				"type": "array",
																				"items": {
																					"type": "string"
																				},
																				"maxItems": 100,
																				"description": "Notion data source URLs whose SQLite tables are available to the query;\neach data source is exposed as a table named by its URL. Obtain them from the\nfetch tool, in the format: collection://f336d0bc-b841-465b-8045-024475c079dd"
																			},
																			"query": {
																				"type": "string",
																				"description": "Read-only SQLite query to execute against the data sources. Use a data\nsource URL as the table name, e.g. SELECT * FROM \"collection://...\" WHERE ....\nUse only table and column names shown in the fetched `<sqlite-table>` definition;\ndate properties use the expanded column names listed there, not the base name.\nExample: if the fetched schema has a date property `Due`, use `\"date:Due:start\"`, not `\"Due\"`.\nProperties of type `created_time` or `last_edited_time` keep their exact fetched\nbase columns (e.g. `\"Created\"` only if listed). A formula or another property\nwith a date-looking name or result does not automatically have `date:` columns\nor become queryable. Copy actual fetched columns, not property labels.\nInclude every needed filter in WHERE (filters on views of the data source are\nnot automatically applied). For time comparisons or ordering, normalize text\ntimestamps with datetime(...) or date(...).\nSQL text values can omit rich-text mentions and formatting, and links can\nlose their destination. Use faithful rows mode or fetch the page before rewriting\na rich-text property."
																			},
																			"mode": {
																				"type": "string",
																				"const": "sql",
																				"description": "Optional mode parameter. Defaults to 'sql' if not specified. SQL mode does not accept is_archived; that parameter belongs only to view mode."
																			},
																			"params": {
																				"type": "array",
																				"items": {
																					"oneOf": [
																						{
																							"type": "string"
																						},
																						{
																							"type": "number"
																						},
																						{
																							"type": "boolean"
																						},
																						{
																							"type": "null"
																						}
																					]
																				},
																				"maxItems": 100,
																				"description": "Positional parameters bound to `?` placeholders in the query. Prefer\nparameterized queries over string interpolation. Use \"__YES__\" for checked\ncheckboxes and \"__NO__\" for unchecked checkboxes."
																			}
																		},
																		"additionalProperties": false,
																		"required": ["data_source_urls", "query"],
																		"title": "Sql"
																	},
																	{
																		"type": "object",
																		"properties": {
																			"mode": {
																				"type": "string",
																				"const": "view",
																				"description": "Mode for executing a database view's existing query"
																			},
																			"view_url": {
																				"type": "string",
																				"description": "URL of a specific database view to query.\nExample: https://www.notion.so/workspace/db-id?v=view-id"
																			},
																			"start_cursor": {
																				"type": "string",
																				"minLength": 1,
																				"maxLength": 200,
																				"description": "Cursor for pagination. Use the next_cursor value from the previous response to get the next page."
																			},
																			"page_size": {
																				"type": "integer",
																				"minimum": 1,
																				"maximum": 100,
																				"description": "Number of rows to return per page (default: 100, max: 100)."
																			},
																			"is_archived": {
																				"type": "boolean",
																				"description": "Optional archive selector. Omitted or false queries non-archived rows only; true queries archived rows only."
																			}
																		},
																		"additionalProperties": false,
																		"required": ["mode", "view_url"],
																		"title": "View"
																	},
																	{
																		"type": "object",
																		"properties": {
																			"mode": {
																				"type": "string",
																				"const": "rows",
																				"description": "Return data source rows with rich-text mentions, links, formatting, dates, and equations preserved."
																			},
																			"data_source_url": {
																				"type": "string",
																				"description": "One Notion data source URL obtained from a fetch result."
																			},
																			"filter": {
																				"$ref": "#/components/schemas/workflowViewFilter",
																				"description": "Structured filter using exact property names from the data source schema. Supports an outer Boolean group plus one nested group level."
																			},
																			"sort": {
																				"type": "array",
																				"items": {
																					"type": "object",
																					"properties": {
																						"property": {
																							"type": "string",
																							"description": "Exact data source property name to sort."
																						},
																						"direction": {
																							"type": "string",
																							"enum": [
																								"ascending",
																								"descending"
																							],
																							"description": "One of: `ascending`, `descending`"
																						}
																					},
																					"additionalProperties": false,
																					"required": ["property", "direction"]
																				},
																				"maxItems": 100,
																				"description": "Structured property sorts applied in order."
																			},
																			"limit": {
																				"type": "integer",
																				"minimum": 1,
																				"maximum": 100,
																				"description": "Number of rows to return (default: 50, max: 100)."
																			}
																		},
																		"additionalProperties": false,
																		"required": ["mode", "data_source_url"],
																		"title": "Rows"
																	}
																],
																"description": "Mode parameter reference and examples.\n\nPut `mode`, `query`, `data_source_urls`, `data_source_url`, `params`, `limit`, filters (`filter`), sorts (`sort`), and view arguments (`view_url`, `start_cursor`, `page_size`, `is_archived`) inside `data`, never at the tool-argument root.\nAll examples below are complete tool arguments with exactly one outer `data` wrapper. Pass them as shown; do not add another wrapper.\n\nSQL mode:\n- Use single quotes for SQL string values, such as `\"Status\" = 'Done'`. Use double quotes for table and column names. In SQL, `''` is an empty string.\n- Prefer `?` placeholders for values. For text values, the `params` array uses JSON strings, so `[\"\"]` passes an empty string and `[\"__YES__\"]` passes a checked checkbox value. Do not add SQL quote marks around a bound value.\n- Checkbox SQL values: `'__YES__'` means checked; `'__NO__'` means unchecked.\n\nRows mode:\nReturn up to 100 rows with faithful rich-text property values and optional structured filters and sorts.\n\nExample:\n<example>{\"data\":{\"mode\":\"rows\",\"data_source_url\":\"collection://f336d0bc-b841-465b-8045-024475c079dd\",\"filter\":{\"type\":\"group\",\"operator\":\"and\",\"filters\":[{\"type\":\"property\",\"property\":\"Status\",\"propertyType\":\"select\",\"operator\":\"enum_is\",\"value\":{\"type\":\"exact\",\"value\":\"In Progress\"}}]},\"limit\":20}}</example>\n\nExamples:\n- Simple SQL: <example>{\"data\":{\"data_source_urls\":[\"collection://f336d0bc-b841-465b-8045-024475c079dd\"],\"query\":\"SELECT * FROM [collection://f336d0bc-b841-465b-8045-024475c079dd] LIMIT 10\"}}</example>\n- SQL parameters: <example>{\"data\":{\"mode\":\"sql\",\"data_source_urls\":[\"collection://f336d0bc-b841-465b-8045-024475c079dd\"],\"query\":\"SELECT * FROM [collection://f336d0bc-b841-465b-8045-024475c079dd] WHERE Status = ? AND Priority = ?\",\"params\":[\"In Progress\",\"High\"]}}</example>\n- Checkbox query: <example>{\"data\":{\"data_source_urls\":[\"collection://f336d0bc-b841-465b-8045-024475c079dd\"],\"query\":\"SELECT * FROM [collection://f336d0bc-b841-465b-8045-024475c079dd] WHERE Completed = ?\",\"params\":[\"__YES__\"]}}</example>\n\nView mode:\nExecute a specific database view's query with its filters and sorts.\nOmit \"is_archived\" or set it to false for non-archived rows. Set\n\"is_archived\": true to apply the view inside the archived partition.\nWhen the response has \"has_more\": true, pass its \"next_cursor\" as\n\"start_cursor\" in a follow-up view-mode request with the same \"is_archived\"\nvalue.\n\nExample:\n<example>{\"data\":{\"mode\":\"view\",\"view_url\":\"https://www.notion.so/f336d0bcb841465b8045024475c079dd?v=0123456789abcdef0123456789abcdef\",\"is_archived\":false}}</example>\n"
															}
														},
														"required": ["data"],
														"description": "The parameters for the query_data_sources tool. Query data source rows, SQL, or a saved view.\n\nUse the required top-level `data` object. Do not pass query parameters at the top level.\n\nIf availability is not already known for this connection, call get_tool_access with {} before using this tool. Reuse the returned access map across tools; check the status and restricted_parameters.\n\nFirst fetch every data source's schema and collection:// URL.\n\nMissing-column recovery: try a schema-backed error suggestion or refetch. If correction fails, next call MUST be fetch, NOT SQL, even with new hints. Rebuild from current `<sqlite-table>`; never guess names/IDs.\n\nModes (default: sql):\n- rows preserves mentions, links, formatting, dates, and equations. Use before rich-text repairs/rewrites.\n- sql runs read-only SQLite.\n  No `VALUES`; inline rows: `WITH \"ids\"(\"x\") AS (SELECT 'a' UNION ALL SELECT 'b')`.\n  Use only table/column names in fetched `<sqlite-table>`, never property IDs. Schema keys name properties; schema/view listings (e.g. `displayProperties`) may be unqueryable. Formula/rollup columns must be listed; otherwise use rows/fetch.\n  System `url`/`createdTime` are columns; other metadata must be listed. Never guess `Name`, `Title`, `page_id`, `rowid`, `lastEditedTime`.\n  User `url`/`id` use `userDefined:` columns (e.g. `\"userDefined:url\"`).\n  Date properties expand to `date:<Name>:start`, `:end`, `:is_datetime`; `created_time` keeps its base name.\n  Bind untrusted values with `?` and `params`. Include needed filters; view filters don't apply.\n  SQL may omit mentions/formatting and link destinations. This is not proof of corrupt properties.\n- view runs saved filters/sorts. is_archived defaults false (active); true selects archived rows. If has_more, pass next_cursor as start_cursor with the same is_archived.\n\nView mode has no tool-specific plan quota. SQL is unlimited on Business and Enterprise with Notion AI. Other plans have a shared workspace limit for single-data-source SQL and cannot query multiple data sources at once."
													}
												},
												"required": ["type", "query_data_sources"],
												"title": "Query Data Sources"
											},
											{
												"type": "object",
												"properties": {
													"type": {
														"type": "string",
														"const": "query_multiple_data_sources",
														"description": "The name of the tool to run."
													},
													"query_multiple_data_sources": {
														"type": "object",
														"properties": {
															"query": {
																"type": "string",
																"description": "Read-only SQLite query to execute against the data sources. Use a data\nsource URL as the table name, e.g. SELECT * FROM \"collection://...\" WHERE ....\nUse only table and column names shown in the fetched `<sqlite-table>` definition;\ndate properties use the expanded column names listed there, not the base name.\nExample: if the fetched schema has a date property `Due`, use `\"date:Due:start\"`, not `\"Due\"`.\nProperties of type `created_time` or `last_edited_time` keep their exact fetched\nbase columns (e.g. `\"Created\"` only if listed). A formula or another property\nwith a date-looking name or result does not automatically have `date:` columns\nor become queryable. Copy actual fetched columns, not property labels.\nInclude every needed filter in WHERE (filters on views of the data source are\nnot automatically applied). For time comparisons or ordering, normalize text\ntimestamps with datetime(...) or date(...).\nSQL text values can omit rich-text mentions and formatting, and links can\nlose their destination. Use faithful rows mode or fetch the page before rewriting\na rich-text property."
															},
															"data_source_urls": {
																"type": "array",
																"items": {
																	"type": "string"
																},
																"maxItems": 100,
																"minItems": 2,
																"description": "Notion data source URLs whose SQLite tables are available to the query;\neach data source is exposed as a table named by its URL. Obtain them from the\nfetch tool, in the format: collection://f336d0bc-b841-465b-8045-024475c079dd"
															},
															"params": {
																"type": "array",
																"items": {
																	"oneOf": [
																		{
																			"type": "string"
																		},
																		{
																			"type": "number"
																		},
																		{
																			"type": "boolean"
																		},
																		{
																			"type": "null"
																		}
																	]
																},
																"maxItems": 100,
																"description": "Positional parameters bound to `?` placeholders in the query. Prefer\nparameterized queries over string interpolation. Use \"__YES__\" for checked\ncheckboxes and \"__NO__\" for unchecked checkboxes."
															},
															"mode": {
																"type": "string",
																"const": "sql",
																"description": "Optional SQL mode marker. This tool only supports SQL queries."
															}
														},
														"additionalProperties": false,
														"required": ["query", "data_source_urls"],
														"description": "The parameters for the query_multiple_data_sources tool. Query data across multiple Notion data sources using read-only SQLite SQL.\n\nIf availability is not already known for this connection, call get_tool_access with {} before using this tool. Reuse the returned access map across tools; check the status and restricted_parameters.\n\nUse this tool for JOINs, UNIONs, comparisons, and aggregations that need two or more data sources. Queries across multiple data sources require a Business or Enterprise plan with Notion AI. Use query_data_sources instead when you need one data source or a saved database view.\n\nPrerequisites:\n1. Use the \"fetch\" tool first to get each data source's schema and collection:// URL.\n2. Data source URLs are found in <data-source url=\"...\"> tags in fetch results.\n\nSQL:\n- Use each collection:// URL as a quoted SQLite table name in the query.\n- Bind untrusted values with ? placeholders and params; do not interpolate them into SQL.\n- Include every needed filter in WHERE. Saved-view filters and sorts are not automatically applied.\n- Checkbox values: use \"__YES__\" for checked and \"__NO__\" for unchecked.\n- Date properties expand to `date:<Name>:start`, `:end`, `:is_datetime`; `created_time` keeps its base name.\n\nReturns matching rows, the queried data source IDs, and whether results were truncated."
													}
												},
												"required": ["type", "query_multiple_data_sources"],
												"title": "Query Multiple Data Sources"
											},
											{
												"type": "object",
												"properties": {
													"type": {
														"type": "string",
														"const": "query_meeting_notes",
														"description": "The name of the tool to run."
													},
													"query_meeting_notes": {
														"type": "object",
														"properties": {
															"filter": {
																"type": "object",
																"properties": {
																	"operator": {
																		"type": "string",
																		"enum": ["and", "or"],
																		"description": "Operator for combinator filters."
																	},
																	"filters": {
																		"type": "array",
																		"items": {
																			"oneOf": [
																				{
																					"$ref": "#/components/schemas/meetingNotesPropertyFilter"
																				},
																				{
																					"type": "object",
																					"properties": {
																						"operator": {
																							"type": "string",
																							"enum": ["and", "or"],
																							"description": "Whether every child must match, or any of them."
																						},
																						"filters": {
																							"type": "array",
																							"items": {
																								"$ref": "#/components/schemas/meetingNotesPropertyFilter"
																							},
																							"maxItems": 100,
																							"description": "The conditions in this group. A group with no conditions matches nothing, so send at least one."
																						}
																					},
																					"additionalProperties": false,
																					"required": ["operator", "filters"]
																				}
																			]
																		},
																		"maxItems": 100,
																		"description": "Nested filters; each may be a combinator (and/or) or property filter."
																	}
																},
																"required": ["operator"],
																"description": "Meeting note filter reference.\n\nTitle keyword searching uses a filter on property \"title\" (for example, string_contains).\nReturns up to 50 rows of matching meeting notes.\n\nFilterable properties:\n- \"title\" (text) — meeting title\n- \"attendees\" (person) — meeting attendees\n- \"created_time\" (date) — when the meeting note was created\n- \"created_by\" (person) — who created the meeting note\n- \"last_edited_time\" (date) — when the meeting note was last edited\n- \"last_edited_by\" (person) — who last edited the meeting note\n\nCombinator filters use \"filters\" (not \"operands\"):\n{\n  \"operator\": \"and\" | \"or\",\n  \"filters\": [ ... ]\n}\n\nDate filtering (recommended default: date_is_within):\n- Prefer \"date_is_within\" for relative windows like \"past N days/weeks/months\".\n- Relative (common): { type: \"relative\", value: \"the_past_week\" | \"the_past_month\" | \"this_week\" }\n- Relative (custom): { type: \"relative\", value: \"custom\", direction: \"past\" | \"future\", unit: \"day\" | \"week\" | \"month\" | \"year\", count: <number> }\n- Exact range: { type: \"exact\", value: { type: \"daterange\", start_date: \"YYYY-MM-DD\", end_date: \"YYYY-MM-DD\" } }\n- Single-date operators (\"date_is\", \"date_is_before\", \"date_is_after\", \"date_is_on_or_before\", \"date_is_on_or_after\"):\n  - Exact: { type: \"exact\", value: { type: \"date\", start_date: \"YYYY-MM-DD\" } }\n  - Relative shortcuts: today | tomorrow | yesterday | one_week_ago | one_week_from_now | one_month_ago | one_month_from_now\n\nTitle keyword filtering (OR vs AND):\n- Use OR (\"operator\": \"or\") when unsure or for broad discovery.\n- Use AND (\"operator\": \"and\") when the user is specific and you want to narrow results.\n- Break multi-word phrases into individual terms and filter on each term separately.\n\nExamples:\n- Past week: <example>{\"operator\":\"and\",\"filters\":[{\"property\":\"created_time\",\"filter\":{\"operator\":\"date_is_within\",\"value\":{\"type\":\"relative\",\"value\":\"the_past_week\"}}}]}</example>\n- Past 3 days: <example>{\"operator\":\"and\",\"filters\":[{\"property\":\"created_time\",\"filter\":{\"operator\":\"date_is_within\",\"value\":{\"type\":\"relative\",\"value\":\"custom\",\"direction\":\"past\",\"unit\":\"day\",\"count\":3}}}]}</example>\n- Exact date range: <example>{\"operator\":\"and\",\"filters\":[{\"property\":\"created_time\",\"filter\":{\"operator\":\"date_is_within\",\"value\":{\"type\":\"exact\",\"value\":{\"type\":\"daterange\",\"start_date\":\"2025-01-01\",\"end_date\":\"2025-12-31\"}}}}]}</example>\n- Created after a date: <example>{\"operator\":\"and\",\"filters\":[{\"property\":\"created_time\",\"filter\":{\"operator\":\"date_is_after\",\"value\":{\"type\":\"exact\",\"value\":{\"type\":\"date\",\"start_date\":\"2025-06-01\"}}}}]}</example>\n- Specific attendee: <example>{\"operator\":\"and\",\"filters\":[{\"property\":\"attendees\",\"filter\":{\"operator\":\"person_contains\",\"value\":[{\"type\":\"exact\",\"value\":{\"table\":\"notion_user\",\"id\":\"<user-id>\"}}]}}]}</example>\n- Attendee since a date: <example>{\"operator\":\"and\",\"filters\":[{\"property\":\"created_time\",\"filter\":{\"operator\":\"date_is_on_or_after\",\"value\":{\"type\":\"exact\",\"value\":{\"type\":\"date\",\"start_date\":\"2025-01-01\"}}}},{\"property\":\"attendees\",\"filter\":{\"operator\":\"person_contains\",\"value\":[{\"type\":\"exact\",\"value\":{\"table\":\"notion_user\",\"id\":\"<user-id>\"}}]}}]}</example>\n- Title contains both terms: <example>{\"operator\":\"and\",\"filters\":[{\"property\":\"title\",\"filter\":{\"operator\":\"string_contains\",\"value\":{\"type\":\"exact\",\"value\":\"design\"}}},{\"property\":\"title\",\"filter\":{\"operator\":\"string_contains\",\"value\":{\"type\":\"exact\",\"value\":\"review\"}}}]}</example>\n- Title contains either term: <example>{\"operator\":\"or\",\"filters\":[{\"property\":\"title\",\"filter\":{\"operator\":\"string_contains\",\"value\":{\"type\":\"exact\",\"value\":\"standup\"}}},{\"property\":\"title\",\"filter\":{\"operator\":\"string_contains\",\"value\":{\"type\":\"exact\",\"value\":\"sync\"}}}]}</example>"
															}
														},
														"description": "The parameters for the query_meeting_notes tool. Query the current user's meeting notes data source.\n\nUse search first to resolve people IDs for attendee filters. By default, results already include meetings where the current user is an attendee or creator; do not add a current-user filter.\n\nTreat words such as summaries, notes, todos, action items, and deliverables as requested meeting output, not title terms. Example: \"What are my meeting todos?\" needs no title filter for \"todos\". Add a title filter only when the user clearly names a meeting, such as \"standup\", \"sprint planning\", or \"1:1 with Alice\". Generic date phrases like \"recent meetings\", \"latest meetings\", \"meetings this week\", or \"yesterday's meetings\" should be interpreted as date range filters — never as title filters. Unless the user asks about a meeting whose title contains another person's name, treat that person as an attendee or creator. Use their name as a title fallback only after attendee filtering returns no results.\n\nTitle keyword matching is case-insensitive; capitalization does not matter. Matching is lexical, so simplify a filter to one term when it returns no results. The filter parameter contains the complete property, date, Boolean-combination, and example reference.\n\nIf availability is not already known for this connection, call get_tool_access with {} before using this tool. Reuse the returned access map across tools; check the status and restricted_parameters."
													}
												},
												"required": ["type", "query_meeting_notes"],
												"title": "Query Meeting Notes"
											},
											{
												"type": "object",
												"properties": {
													"type": {
														"type": "string",
														"const": "list_agents",
														"description": "The name of the tool to run."
													},
													"list_agents": {
														"type": "object",
														"properties": {
															"query": {
																"type": "string",
																"minLength": 1,
																"maxLength": 100,
																"description": "Optional search query to filter agents by name or description (case-insensitive)."
															},
															"start_cursor": {
																"type": "string",
																"minLength": 1,
																"description": "Cursor for pagination. Use the next_cursor value from the previous response to get the next page."
															},
															"page_size": {
																"type": "integer",
																"minimum": 1,
																"maximum": 100,
																"description": "Number of agents to return per page (default: 50, max: 100)."
															}
														},
														"description": "The parameters for the list_agents tool. Retrieves a list of all custom agents (workflows) that the authenticated user has access to in the current workspace.\nThis tool provides visibility into available agents including their names, IDs, descriptions, and system instructions.\n\nThe optional query filters agents by case-insensitive substring match on their name and description. Results are\npaginated: when has_more is true, pass the response's next_cursor back as start_cursor to fetch the next page.\n\nThe returned data includes:\n- Agent ID\n- Agent name\n- Agent description\n- Agent system instructions\n\n<examples>\n1. List all available agents: {}\n\n2. Filter agents by name or description: {\"query\": \"customer support\"}\n\n3. Get next page of results: {\"start_cursor\": \"...\"}\n\n4. Set custom page size: {\"page_size\": 20}\n</examples>\n\nIf availability is not already known for this connection, call get_tool_access with {} before using this tool. Reuse the returned access map across tools; check the status and restricted_parameters."
													}
												},
												"required": ["type", "list_agents"],
												"title": "List Agents"
											},
											{
												"type": "object",
												"properties": {
													"type": {
														"type": "string",
														"const": "list_private_pages",
														"description": "The name of the tool to run."
													},
													"list_private_pages": {
														"type": "object",
														"properties": {
															"limit": {
																"type": "number",
																"description": "Maximum results to return (1-200)."
															},
															"cursor": {
																"type": "string",
																"description": "Opaque pagination cursor from the previous response."
															}
														},
														"additionalProperties": false,
														"description": "The parameters for the list_private_pages tool. List the current user's top-level pages and databases in their Private sidebar section. Use this to browse private workspace structure. For content searches, including keywords and titles, use ai_search when get_tool_access reports it is available; otherwise use search. Follow cursor pagination when the complete list is needed."
													}
												},
												"required": ["type", "list_private_pages"],
												"title": "List Private Pages"
											},
											{
												"type": "object",
												"properties": {
													"type": {
														"type": "string",
														"const": "list_shared_pages",
														"description": "The name of the tool to run."
													},
													"list_shared_pages": {
														"type": "object",
														"properties": {
															"limit": {
																"type": "number",
																"description": "Maximum results to return (1-200)."
															},
															"cursor": {
																"type": "string",
																"description": "Opaque pagination cursor from the previous response."
															}
														},
														"additionalProperties": false,
														"description": "The parameters for the list_shared_pages tool. List pages and databases in the current user's Shared sidebar section. Use this to browse content shared directly with the user. For content searches, including keywords and titles, use ai_search when get_tool_access reports it is available; otherwise use search. Follow cursor pagination when the complete list is needed."
													}
												},
												"required": ["type", "list_shared_pages"],
												"title": "List Shared Pages"
											},
											{
												"type": "object",
												"properties": {
													"type": {
														"type": "string",
														"const": "list_favorite_pages",
														"description": "The name of the tool to run."
													},
													"list_favorite_pages": {
														"type": "object",
														"properties": {
															"limit": {
																"type": "number",
																"description": "Maximum results to return (1-200)."
															},
															"cursor": {
																"type": "string",
																"description": "Opaque pagination cursor from the previous response."
															}
														},
														"additionalProperties": false,
														"description": "The parameters for the list_favorite_pages tool. List the current user's favorite pages and databases in sidebar order. Use this when the user refers to a favorite or pinned workspace item. Follow cursor pagination when the complete list is needed."
													}
												},
												"required": ["type", "list_favorite_pages"],
												"title": "List Favorite Pages"
											},
											{
												"type": "object",
												"properties": {
													"type": {
														"type": "string",
														"const": "list_recent_pages",
														"description": "The name of the tool to run."
													},
													"list_recent_pages": {
														"type": "object",
														"properties": {
															"limit": {
																"type": "number",
																"description": "Maximum results to return (1-200)."
															},
															"cursor": {
																"type": "string",
																"description": "Opaque pagination cursor from the previous response."
															}
														},
														"additionalProperties": false,
														"description": "The parameters for the list_recent_pages tool. List pages and databases the current user recently viewed, ranked by recency and visit frequency. Use this to recover likely navigation context when the user refers to something they were recently working on. This reflects views, not edits; to find pages the user edited, use search with filters.edited_by_user_ids: [\"me\"] and sort: \"last_edited\". Follow cursor pagination when the complete list is needed."
													}
												},
												"required": ["type", "list_recent_pages"],
												"title": "List Recent Pages"
											},
											{
												"type": "object",
												"properties": {
													"type": {
														"type": "string",
														"const": "search_agents",
														"description": "The name of the tool to run."
													},
													"search_agents": {
														"type": "object",
														"properties": {
															"scope": {
																"type": "string",
																"enum": ["favorites", "workspace"],
																"description": "Which agents to list: \"favorites\" for the current user's favorite agents, or \"workspace\" for agents shared with the workspace."
															},
															"query": {
																"type": "string",
																"description": "Search text matched against agent names and descriptions. Queries return one page and cannot use a cursor. When omitted, favorites are returned in sidebar order and workspace agents are returned newest first."
															},
															"limit": {
																"type": "number",
																"description": "Maximum results to return (1-200)."
															},
															"cursor": {
																"type": "string",
																"description": "Opaque pagination cursor from the previous response."
															}
														},
														"additionalProperties": false,
														"required": ["scope"],
														"description": "The parameters for the search_agents tool. Search agents by name or description, or browse the current user's favorite agents and the workspace's newest agents. Queries return one page. Without a query, follow nextCursor until it is omitted, even when a bounded workspace page is empty. Use this instead of list_agents when personal favorites or relevance-ranked search are needed.\n\nIf availability is not already known for this connection, call get_tool_access with {} before using this tool. Reuse the returned access map across tools; check the status and restricted_parameters."
													}
												},
												"required": ["type", "search_agents"],
												"title": "Search Agents"
											},
											{
												"type": "object",
												"properties": {
													"type": {
														"type": "string",
														"const": "xldb_get_column_optimization",
														"description": "The name of the tool to run."
													},
													"xldb_get_column_optimization": {
														"type": "object",
														"properties": {
															"tableId": {
																"type": "string",
																"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$",
																"description": "ID of the XL database table."
															},
															"columnId": {
																"type": "string",
																"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$",
																"description": "ID of the column to inspect."
															}
														},
														"additionalProperties": false,
														"required": ["tableId", "columnId"],
														"description": "The parameters for the xldb_get_column_optimization tool. Read whether an XL database column is optimized and inspect its index build status."
													}
												},
												"required": ["type", "xldb_get_column_optimization"],
												"title": "Xldb Get Column Optimization"
											},
											{
												"type": "object",
												"properties": {
													"type": {
														"type": "string",
														"const": "xldb_get_table_optimization_context",
														"description": "The name of the tool to run."
													},
													"xldb_get_table_optimization_context": {
														"type": "object",
														"properties": {
															"tableId": {
																"type": "string",
																"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$",
																"description": "ID of the XL database table."
															}
														},
														"additionalProperties": false,
														"required": ["tableId"],
														"description": "The parameters for the xldb_get_table_optimization_context tool. Read an XL database table's indexes, view filters and sorts, and column usage to plan optimizations."
													}
												},
												"required": [
													"type",
													"xldb_get_table_optimization_context"
												],
												"title": "Xldb Get Table Optimization Context"
											},
											{
												"type": "object",
												"properties": {
													"type": {
														"type": "string",
														"const": "xldb_query_rows",
														"description": "The name of the tool to run."
													},
													"xldb_query_rows": {
														"type": "object",
														"properties": {
															"tableId": {
																"type": "string",
																"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$",
																"description": "ID of the XLDB table to query."
															},
															"request": {
																"type": "object",
																"properties": {
																	"explain": {
																		"type": "string",
																		"enum": ["plan", "analyze"],
																		"description": "One of: `plan`, `analyze`"
																	},
																	"query": {
																		"type": "object",
																		"properties": {
																			"search": {
																				"type": "string",
																				"description": "Text to search for in row values."
																			},
																			"filter": {
																				"description": "XLDB filter expression to apply to rows."
																			},
																			"sorts": {
																				"type": "array",
																				"items": {
																					"type": "object",
																					"properties": {
																						"columnId": {
																							"type": "string",
																							"pattern": "^(?:[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}|(?:join|collection_join):[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}:[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})$",
																							"description": "ID of the column to sort by."
																						},
																						"direction": {
																							"type": "string",
																							"enum": ["asc", "desc"],
																							"description": "One of: `asc`, `desc`"
																						}
																					},
																					"additionalProperties": false,
																					"required": ["columnId", "direction"]
																				},
																				"description": "Columns to sort by, in priority order."
																			},
																			"rowIds": {
																				"type": "array",
																				"items": {
																					"type": "string",
																					"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"
																				},
																				"description": "Restrict the query to these row IDs."
																			}
																		},
																		"additionalProperties": false,
																		"description": "Filters, sorting, and search to apply to this query."
																	},
																	"columns": {
																		"type": "array",
																		"items": {
																			"type": "string"
																		},
																		"description": "Column IDs to return. Omit to return all projected columns."
																	},
																	"limit": {
																		"type": "number",
																		"description": "Maximum number of rows to return in this page."
																	},
																	"cursor": {
																		"type": "string",
																		"description": "Opaque nextCursor from the previous response. Use with the same query."
																	},
																	"offset": {
																		"type": "number",
																		"description": "NextOffset from the previous response for queries using offset pagination."
																	}
																},
																"additionalProperties": false,
																"description": "Query options, projected columns, and page position."
															}
														},
														"additionalProperties": false,
														"required": ["tableId", "request"],
														"description": "The parameters for the xldb_query_rows tool. Query XL database table rows with filters, sorts, pagination, and optional query analysis."
													}
												},
												"required": ["type", "xldb_query_rows"],
												"title": "Xldb Query Rows"
											},
											{
												"type": "object",
												"properties": {
													"type": {
														"type": "string",
														"const": "xldb_query_view_rows",
														"description": "The name of the tool to run."
													},
													"xldb_query_view_rows": {
														"type": "object",
														"properties": {
															"viewId": {
																"type": "string",
																"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$",
																"description": "ID of the XLDB view to query."
															},
															"request": {
																"type": "object",
																"properties": {
																	"explain": {
																		"type": "string",
																		"enum": ["plan", "analyze"],
																		"description": "One of: `plan`, `analyze`"
																	},
																	"query": {
																		"type": "object",
																		"properties": {
																			"search": {
																				"type": "string",
																				"description": "Text to search for in row values."
																			},
																			"filter": {
																				"description": "XLDB filter expression to apply to rows."
																			},
																			"sorts": {
																				"type": "array",
																				"items": {
																					"type": "object",
																					"properties": {
																						"columnId": {
																							"type": "string",
																							"pattern": "^(?:[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}|(?:join|collection_join):[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}:[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})$",
																							"description": "ID of the column to sort by."
																						},
																						"direction": {
																							"type": "string",
																							"enum": ["asc", "desc"],
																							"description": "One of: `asc`, `desc`"
																						}
																					},
																					"additionalProperties": false,
																					"required": ["columnId", "direction"]
																				},
																				"description": "Columns to sort by, in priority order."
																			},
																			"rowIds": {
																				"type": "array",
																				"items": {
																					"type": "string",
																					"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"
																				},
																				"description": "Restrict the query to these row IDs."
																			}
																		},
																		"additionalProperties": false,
																		"description": "Filters, sorting, and search to apply to this query."
																	},
																	"columns": {
																		"type": "array",
																		"items": {
																			"type": "string"
																		},
																		"description": "Column IDs to return. Omit to return all projected columns."
																	},
																	"limit": {
																		"type": "number",
																		"description": "Maximum number of rows to return in this page."
																	},
																	"cursor": {
																		"type": "string",
																		"description": "Opaque nextCursor from the previous response. Use with the same query."
																	},
																	"offset": {
																		"type": "number",
																		"description": "NextOffset from the previous response for queries using offset pagination."
																	}
																},
																"additionalProperties": false,
																"description": "Query options, projected columns, and page position."
															}
														},
														"additionalProperties": false,
														"required": ["viewId", "request"],
														"description": "The parameters for the xldb_query_view_rows tool. Query XL database view rows with filters, sorts, pagination, and optional query analysis."
													}
												},
												"required": ["type", "xldb_query_view_rows"],
												"title": "Xldb Query View Rows"
											},
											{
												"type": "object",
												"properties": {
													"type": {
														"type": "string",
														"const": "xldb_get_view_joins",
														"description": "The name of the tool to run."
													},
													"xldb_get_view_joins": {
														"type": "object",
														"properties": {
															"viewId": {
																"type": "string",
																"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$",
																"description": "ID of the XL database view to read."
															}
														},
														"additionalProperties": false,
														"required": ["viewId"],
														"description": "The parameters for the xldb_get_view_joins tool. Read an XL database view's joins and their selected columns."
													}
												},
												"required": ["type", "xldb_get_view_joins"],
												"title": "Xldb Get View Joins"
											},
											{
												"type": "object",
												"properties": {
													"type": {
														"type": "string",
														"const": "xldb_plan_table",
														"description": "The name of the tool to run."
													},
													"xldb_plan_table": {
														"type": "object",
														"properties": {
															"table": {
																"type": "object",
																"properties": {
																	"name": {
																		"type": "string",
																		"description": "Stable name of the table or column."
																	},
																	"title": {
																		"type": "string",
																		"description": "Display title of the table or column."
																	},
																	"schema": {
																		"type": "object",
																		"properties": {
																			"columns": {
																				"type": "array",
																				"items": {
																					"type": "object",
																					"properties": {
																						"name": {
																							"type": "string",
																							"description": "Stable name of the table or column."
																						},
																						"title": {
																							"type": "string",
																							"description": "Display title of the table or column."
																						},
																						"type": {
																							"type": "string",
																							"enum": [
																								"text",
																								"number",
																								"checkbox",
																								"date",
																								"timestamp",
																								"select",
																								"multi_select",
																								"person",
																								"relation",
																								"array_person",
																								"array_relation"
																							],
																							"description": "One of: `text`, `number`, `checkbox`, `date`, `timestamp`, `select`, `multi_select`, `person`, `relation`, `array_person`, `array_relation`"
																						},
																						"config": {
																							"type": "object",
																							"properties": {
																								"entity_type": {
																									"type": "string",
																									"const": "collection",
																									"description": "Always `collection`"
																								},
																								"id": {
																									"type": "string",
																									"format": "uuid",
																									"description": "ID of the Notion collection targeted by this relation column."
																								}
																							},
																							"additionalProperties": false,
																							"required": ["entity_type", "id"],
																							"description": "Type-specific column settings, such as the target of a relation."
																						},
																						"mutability": {
																							"type": "string",
																							"enum": [
																								"read_only",
																								"read_write"
																							],
																							"description": "One of: `read_only`, `read_write`"
																						},
																						"selectOptions": {
																							"type": "array",
																							"items": {
																								"type": "object",
																								"properties": {
																									"name": {
																										"type": "string",
																										"description": "Stable name used to identify the column or select option."
																									},
																									"title": {
																										"type": "string",
																										"description": "Display title of the column or select option."
																									},
																									"color": {
																										"type": "string",
																										"description": "Display color of the select option."
																									}
																								},
																								"additionalProperties": false,
																								"required": ["name", "title"]
																							},
																							"description": "Available options for select and multi-select columns."
																						}
																					},
																					"additionalProperties": false,
																					"required": ["name", "title", "type"]
																				},
																				"description": "Column definitions for the desired table."
																			},
																			"uniqueConstraints": {
																				"type": "array",
																				"items": {
																					"type": "object",
																					"properties": {
																						"columns": {
																							"type": "array",
																							"items": {
																								"type": "string"
																							},
																							"description": "Column names that together form this unique constraint."
																						}
																					},
																					"additionalProperties": false,
																					"required": ["columns"]
																				},
																				"description": "Groups of column names whose combined values must be unique."
																			}
																		},
																		"additionalProperties": false,
																		"required": [
																			"columns",
																			"uniqueConstraints"
																		],
																		"description": "Desired columns and unique constraints."
																	}
																},
																"additionalProperties": false,
																"required": ["name", "title", "schema"],
																"description": "Desired table definition to plan or apply."
															}
														},
														"additionalProperties": false,
														"required": ["table"],
														"description": "The parameters for the xldb_plan_table tool. Preview changes needed to create or update an XL database table. This does not apply the changes."
													}
												},
												"required": ["type", "xldb_plan_table"],
												"title": "Xldb Plan Table"
											},
											{
												"type": "object",
												"properties": {
													"type": {
														"type": "string",
														"const": "xldb_get_view",
														"description": "The name of the tool to run."
													},
													"xldb_get_view": {
														"type": "object",
														"properties": {
															"viewId": {
																"type": "string",
																"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$",
																"description": "ID of the XL database view to read."
															}
														},
														"additionalProperties": false,
														"required": ["viewId"],
														"description": "The parameters for the xldb_get_view tool. Read an XL database view's filters, sorts, and projected columns."
													}
												},
												"required": ["type", "xldb_get_view"],
												"title": "Xldb Get View"
											},
											{
												"type": "object",
												"properties": {
													"type": {
														"type": "string",
														"const": "xldb_list_views",
														"description": "The name of the tool to run."
													},
													"xldb_list_views": {
														"type": "object",
														"properties": {
															"tableId": {
																"type": "string",
																"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$",
																"description": "ID of the XL database table."
															}
														},
														"additionalProperties": false,
														"required": ["tableId"],
														"description": "The parameters for the xldb_list_views tool. List an XL database table's views."
													}
												},
												"required": ["type", "xldb_list_views"],
												"title": "Xldb List Views"
											},
											{
												"type": "object",
												"properties": {
													"type": {
														"type": "string",
														"const": "xldb_get_table_schema",
														"description": "The name of the tool to run."
													},
													"xldb_get_table_schema": {
														"type": "object",
														"properties": {
															"tableId": {
																"type": "string",
																"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$",
																"description": "ID of the XL database table."
															}
														},
														"additionalProperties": false,
														"required": ["tableId"],
														"description": "The parameters for the xldb_get_table_schema tool. Read an XL database table's columns, select options, and unique constraints."
													}
												},
												"required": ["type", "xldb_get_table_schema"],
												"title": "Xldb Get Table Schema"
											},
											{
												"type": "object",
												"properties": {
													"type": {
														"type": "string",
														"const": "xldb_get_workspace_status",
														"description": "The name of the tool to run."
													},
													"xldb_get_workspace_status": {
														"type": "object",
														"properties": {},
														"additionalProperties": false,
														"description": "The parameters for the xldb_get_workspace_status tool. Read the provisioning status of this workspace's XL database storage."
													}
												},
												"required": ["type", "xldb_get_workspace_status"],
												"title": "Xldb Get Workspace Status"
											},
											{
												"type": "object",
												"properties": {
													"type": {
														"type": "string",
														"const": "xldb_list_tables",
														"description": "The name of the tool to run."
													},
													"xldb_list_tables": {
														"type": "object",
														"properties": {
															"cursor": {
																"type": "string",
																"pattern": "^[A-Za-z0-9_-]{1,4096}$",
																"description": "Opaque pagination cursor from the previous response's nextCursor."
															}
														},
														"additionalProperties": false,
														"description": "The parameters for the xldb_list_tables tool. List a page of the space's XL database tables."
													}
												},
												"required": ["type", "xldb_list_tables"],
												"title": "Xldb List Tables"
											},
											{
												"type": "object",
												"properties": {
													"type": {
														"type": "string",
														"const": "get_version_changes",
														"description": "The name of the tool to run."
													},
													"get_version_changes": {
														"type": "object",
														"properties": {
															"page": {
																"type": "string",
																"description": "The page or database to read: a page URL, database URL, data source (collection://) URL, or ID."
															},
															"start_time": {
																"type": "string",
																"description": "Start of the time range, not included, as an ISO 8601 time with a time zone, such as \"2026-10-10T18:05:02Z\". Leave it out unless the user names a time; it defaults to 24 hours before end_time."
															},
															"end_time": {
																"type": "string",
																"description": "End of the time range, included, as an ISO 8601 time with a time zone, such as \"2026-10-10T18:05:02Z\". Must be after start_time. Leave it out unless the user names a time; it defaults to now."
															},
															"authors": {
																"type": "array",
																"items": {
																	"type": "string"
																},
																"maxItems": 100,
																"minItems": 1,
																"description": "Only return records that these people or agents changed: user:// URLs or agent URLs. Each record's before and after still include everyone's edits in the range, and contributors lists everyone who edited it."
															},
															"sources": {
																"type": "array",
																"items": {
																	"type": "string",
																	"enum": [
																		"notion_ai",
																		"custom_agent",
																		"mcp",
																		"database_automation"
																	],
																	"description": "One of: `notion_ai`, `custom_agent`, `mcp`, `database_automation`"
																},
																"maxItems": 4,
																"minItems": 1,
																"description": "Only return records changed through these, such as [\"notion_ai\", \"custom_agent\", \"mcp\"] for changes made by AI. Each record's before and after still include every edit in the range, and contributors lists everyone who edited it."
															}
														},
														"additionalProperties": false,
														"required": ["page"],
														"description": "The parameters for the get_version_changes tool. List what changed in a Notion page or database between two times, who changed it, and whether they used AI, an agent, or an MCP client. Each block, property, row, data source, or view that changed is listed once, with how it looked at the start and at the end of the time range. The range defaults to the last 24 hours. Filter by authors or sources to list only the records those people, agents, or kinds of edits touched; before and after still include everyone's edits, so use a shorter range to isolate one author. To read the whole page at a time, use view_version. Comments are not listed. Changes inside a page's inline databases are not listed either; pass an inline database's url to read them. Requires edit access to the page."
													}
												},
												"required": ["type", "get_version_changes"],
												"title": "Get Version Changes"
											},
											{
												"type": "object",
												"properties": {
													"type": {
														"type": "string",
														"const": "view_version",
														"description": "The name of the tool to run."
													},
													"view_version": {
														"type": "object",
														"properties": {
															"page": {
																"type": "string",
																"description": "The page or database to read: a page URL, database URL, data source (collection://) URL, or ID."
															},
															"time": {
																"type": "string",
																"description": "The moment to read, as an ISO 8601 time with a time zone offset. Convert the user's date and time in their own time zone, such as \"2026-10-10T14:05:02-04:00\" for 2:05 PM in New York. If the user names only a date, pick a time on that date in their time zone and tell them which."
															},
															"cursor": {
																"type": "string",
																"description": "A database's next_cursor, to read its next rows. Pass the same page and time as the call that returned it."
															}
														},
														"additionalProperties": false,
														"required": ["page", "time"],
														"description": "The parameters for the view_version tool. Read a Notion page or database as it looked at a past time. The open page and other reads show only current content, so use this for any question about what a page said, contained, or looked like at an earlier date, even when the page is already open. A page returns its Markdown and properties; each inline database is a database tag, and you can pass that tag's url to this tool to read the database at the same time. A database returns its data sources, views, and rows. A linked database leaves out the data sources, views, and rows that belong to another database. Requires edit access to the page."
													}
												},
												"required": ["type", "view_version"],
												"title": "View Version"
											},
											{
												"type": "object",
												"properties": {
													"type": {
														"type": "string",
														"const": "list_page_backlinks",
														"description": "The name of the tool to run."
													},
													"list_page_backlinks": {
														"type": "object",
														"properties": {
															"page_id": {
																"type": "string",
																"description": "ID or URL of the page or database to find backlinks for."
															},
															"types": {
																"type": "array",
																"items": {
																	"type": "string",
																	"enum": [
																		"page_mention",
																		"link_to_page",
																		"property_mention",
																		"comment_mention"
																	],
																	"description": "One of: `page_mention`, `link_to_page`, `property_mention`, `comment_mention`"
																},
																"maxItems": 4,
																"description": "Only return these kinds of backlinks. page_mention is an inline @-mention in text, a title, or a caption; link_to_page is a link-to-page block; property_mention is a mention in a database property; comment_mention is a mention in a comment. Omit for all kinds."
															},
															"page_size": {
																"type": "integer",
																"minimum": 1,
																"maximum": 100,
																"description": "Maximum backlinks to return (1-100; default 25)."
															},
															"cursor": {
																"type": "string",
																"description": "next_cursor from the previous call."
															}
														},
														"additionalProperties": false,
														"required": ["page_id"],
														"description": "The parameters for the list_page_backlinks tool. List the pages that link to or mention a Notion page (backlinks), in the same workspace. Returns IDs, titles and URLs only; fetch a result to read it. Only pages you can open are listed. Follow next_cursor for more."
													}
												},
												"required": ["type", "list_page_backlinks"],
												"title": "List Page Backlinks"
											},
											{
												"type": "object",
												"properties": {
													"type": {
														"type": "string",
														"const": "list_workspace_bookmarks",
														"description": "The name of the tool to run."
													},
													"list_workspace_bookmarks": {
														"type": "object",
														"properties": {},
														"additionalProperties": false,
														"description": "The parameters for the list_workspace_bookmarks tool. Available only by invitation during early alpha. General availability is coming soon. This contract may change. List saved workspace timestamps, newest first."
													}
												},
												"required": ["type", "list_workspace_bookmarks"],
												"title": "List Workspace Bookmarks"
											},
											{
												"type": "object",
												"properties": {
													"type": {
														"type": "string",
														"const": "load_permissions",
														"description": "The name of the tool to run."
													},
													"load_permissions": {
														"type": "object",
														"properties": {
															"url": {
																"type": "string",
																"description": "A Notion page or database URL."
															}
														},
														"additionalProperties": false,
														"required": ["url"],
														"description": "The parameters for the load_permissions tool. Read explicit user, workspace, and public sharing permissions for a Notion page or database URL. This is not a complete explanation of effective access: inherited, group, teamspace, and bot permissions are not returned. Read this before update_permission."
													}
												},
												"required": ["type", "load_permissions"],
												"title": "Load Permissions"
											},
											{
												"type": "object",
												"properties": {
													"type": {
														"type": "string",
														"const": "update_permission",
														"description": "The name of the tool to run."
													},
													"update_permission": {
														"type": "object",
														"properties": {
															"url": {
																"type": "string",
																"description": "The Notion page or database URL whose sharing permission will change."
															},
															"item": {
																"oneOf": [
																	{
																		"type": "object",
																		"properties": {
																			"type": {
																				"type": "string",
																				"const": "user",
																				"description": "Always `user`"
																			},
																			"userUrl": {
																				"type": "string",
																				"description": "The recipient’s Notion user URL, in user:// format."
																			},
																			"accessLevel": {
																				"type": "string",
																				"enum": [
																					"full_access",
																					"can_edit",
																					"can_edit_content",
																					"can_comment",
																					"can_view",
																					"no_access"
																				],
																				"description": "One of: `full_access`, `can_edit`, `can_edit_content`, `can_comment`, `can_view`, `no_access`"
																			}
																		},
																		"additionalProperties": false,
																		"required": [
																			"type",
																			"userUrl",
																			"accessLevel"
																		]
																	},
																	{
																		"type": "object",
																		"properties": {
																			"type": {
																				"type": "string",
																				"const": "public",
																				"description": "Always `public`"
																			},
																			"accessLevel": {
																				"type": "string",
																				"enum": [
																					"full_access",
																					"can_edit",
																					"can_edit_content",
																					"can_comment",
																					"can_view",
																					"no_access"
																				],
																				"description": "One of: `full_access`, `can_edit`, `can_edit_content`, `can_comment`, `can_view`, `no_access`"
																			},
																			"publicOptions": {
																				"type": "object",
																				"properties": {
																					"allowDuplicate": {
																						"type": "boolean",
																						"description": "Allow visitors with public access to duplicate the page."
																					},
																					"allowSearchEngineIndexing": {
																						"type": "boolean",
																						"description": "Allow search engines to index the published page."
																					},
																					"expirationTimestamp": {
																						"type": "number",
																						"description": "Expiration time for this public permission as a Unix timestamp in milliseconds."
																					},
																					"clearExpiration": {
																						"type": "boolean",
																						"description": "Remove the public permission expiration. Cannot be combined with expirationTimestamp."
																					},
																					"isPublicShareLink": {
																						"type": "boolean",
																						"description": "Enable public-link access. A public grant requires this or isSite to be true."
																					},
																					"isSite": {
																						"type": "boolean",
																						"description": "Publish as a Notion Site. A public grant requires this or isPublicShareLink to be true."
																					}
																				},
																				"additionalProperties": false,
																				"description": "Public-link or Notion Site options. Omitted fields preserve existing settings, including expiration. New grants disable duplication and search indexing unless explicitly enabled. Omit when removing access."
																			}
																		},
																		"additionalProperties": false,
																		"required": ["type", "accessLevel"]
																	},
																	{
																		"type": "object",
																		"properties": {
																			"type": {
																				"type": "string",
																				"const": "workspace",
																				"description": "Always `workspace`"
																			},
																			"accessLevel": {
																				"type": "string",
																				"enum": [
																					"full_access",
																					"can_edit",
																					"can_edit_content",
																					"can_comment",
																					"can_view",
																					"no_access"
																				],
																				"description": "One of: `full_access`, `can_edit`, `can_edit_content`, `can_comment`, `can_view`, `no_access`"
																			}
																		},
																		"additionalProperties": false,
																		"required": ["type", "accessLevel"]
																	}
																],
																"description": "One explicit user, workspace, or public permission to set or remove. Use no_access to remove the grant."
															},
															"userConfirmed": {
																"type": "boolean",
																"description": "Set true only after the user has explicitly requested or approved this exact sharing change, including the recipient, access level, and any public-link or site options. Otherwise omit this to preview without saving."
															}
														},
														"additionalProperties": false,
														"required": ["url", "item"],
														"description": "The parameters for the update_permission tool. Set or remove exactly one explicit sharing permission on a Notion page or database. First load_permissions and preserve unrelated access. Requires unrestricted workspace membership, Full Access on the target, and a token with read_content and manage_permissions. Use the least-powerful access level; public sharing defaults to can_view unless the user explicitly requests more. For a public grant, publicOptions must set isPublicShareLink or isSite true. Site-only grants cannot have full_access. Omitted options preserve existing settings; set clearExpiration true to remove an expiration, without expirationTimestamp. Use no_access to remove access; user removal fails if inherited or other access would remain. Never change ancestor permissions without an explicit request. Set userConfirmed true only after the user requests or approves this exact recipient, access level, and public options; otherwise the call previews without saving. This does not manage groups, guests, ownership, or complete Sites settings."
													}
												},
												"required": ["type", "update_permission"],
												"title": "Update Permission"
											},
											{
												"type": "object",
												"properties": {
													"type": {
														"type": "string",
														"const": "get_sidebar_tabs",
														"description": "The name of the tool to run."
													},
													"get_sidebar_tabs": {
														"type": "object",
														"properties": {},
														"additionalProperties": false,
														"description": "The parameters for the get_sidebar_tabs tool. Get the current user's Notion sidebar tabs, in order, plus catalogs of the shortcuts and sections they can add. Shortcut groups are not returned or editable. Catalog examples are valid update_sidebar_tabs inputs, including configured New page shortcuts and database view sections. Each tab is independent: built-in items may appear in more than one tab. Call this before update_sidebar_tabs."
													}
												},
												"required": ["type", "get_sidebar_tabs"],
												"title": "Get Sidebar Tabs"
											},
											{
												"type": "object",
												"properties": {
													"type": {
														"type": "string",
														"const": "set_page_notification_level",
														"description": "The name of the tool to run."
													},
													"set_page_notification_level": {
														"type": "object",
														"properties": {
															"page_id": {
																"type": "string",
																"description": "The ID or URL of the Notion page. Accepts a notion.so URL, a raw UUID with or without dashes, or a page:// URI."
															},
															"level": {
																"type": "string",
																"enum": [
																	"all",
																	"important",
																	"comments",
																	"none"
																],
																"description": "How much the calling user wants to hear about this page. \"all\" notifies on every comment and property change, and is accepted for pages inside any database. \"important\" notifies on every comment plus changes to Status, Assignee, and Due dates, and is accepted for pages inside a Tasks or Projects database. \"comments\" notifies on every comment and no property changes, and is accepted for pages that are not inside a Tasks or Projects database. \"none\" notifies only on replies to the user and @mentions of the user, and is accepted for any page."
															}
														},
														"additionalProperties": false,
														"required": ["page_id", "level"],
														"description": "The parameters for the set_page_notification_level tool. Set how much the current user is notified about a Notion page. This is the\n\"Notify me\" setting in the Notion app, and it only ever changes the calling\nuser's own notifications — it cannot subscribe or unsubscribe anyone else.\n\nLevels, and the pages each one is available for:\n- \"all\": every comment on the page, and every property change. Pages inside any\n  database.\n- \"important\": every comment, plus changes to Status, Assignee, and Due dates.\n  Pages inside a Tasks or Projects database.\n- \"comments\": every comment, and no property changes. Pages that are not inside\n  a Tasks or Projects database.\n- \"none\": only replies to the user and @mentions of the user. Any page."
													}
												},
												"required": ["type", "set_page_notification_level"],
												"title": "Set Page Notification Level"
											},
											{
												"type": "object",
												"properties": {
													"type": {
														"type": "string",
														"const": "get_form",
														"description": "The name of the tool to run."
													},
													"get_form": {
														"type": "object",
														"properties": {
															"url": {
																"type": "string",
																"description": "The Notion form or form-view URL to retrieve."
															}
														},
														"additionalProperties": false,
														"required": ["url"],
														"description": "The parameters for the get_form tool. Read a Notion Form's complete definition. Follow tool-docs://notion/databases/forms.md.\n\nIf availability is not already known for this connection, call get_tool_access with {} before using this tool. Reuse the returned access map across tools; check the status and restricted_parameters."
													}
												},
												"required": ["type", "get_form"],
												"title": "Get Form"
											},
											{
												"type": "object",
												"properties": {
													"type": {
														"type": "string",
														"const": "get_self",
														"description": "The name of the tool to run."
													},
													"get_self": {
														"$ref": "#/components/schemas/emptyObject",
														"description": "The parameters for the get_self tool. Get the current Notion connection's workspace and authenticated user. Call with {}. Returns the workspace ID and name, and the user's ID, name, type, and email when available. Use this tool to identify the connected account. To check tool availability, use get_tool_access."
													}
												},
												"required": ["type", "get_self"],
												"title": "Get Self"
											},
											{
												"type": "object",
												"properties": {
													"type": {
														"type": "string",
														"const": "convert_to_meetings_database",
														"description": "The name of the tool to run."
													},
													"convert_to_meetings_database": {
														"type": "object",
														"properties": {
															"databaseUrl": {
																"type": "string",
																"minLength": 1,
																"description": "URL of the database to convert, or of its data source or one of its views."
															},
															"dateProperty": {
																"type": "string",
																"minLength": 1,
																"description": "Name of an existing date property to use as the meeting date."
															},
															"attendeesProperty": {
																"type": "string",
																"minLength": 1,
																"description": "Name of an existing person property to use as the meeting attendees."
															}
														},
														"additionalProperties": false,
														"required": ["databaseUrl"],
														"description": "The parameters for the convert_to_meetings_database tool. Turn an existing regular database into a Meetings database, so its rows can be meeting notes. Existing rows are kept as they are. Only pass dateProperty or attendeesProperty when the user chose an existing property; otherwise a single matching property is reused and a missing one is created."
													}
												},
												"required": ["type", "convert_to_meetings_database"],
												"title": "Convert To Meetings Database"
											}
										]
									}
								]
							}
						}
					}
				},
				"responses": {
					"200": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/runToolResponse"
								}
							}
						}
					},
					"400": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_400"
								}
							}
						}
					},
					"401": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_401"
								}
							}
						}
					},
					"403": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_403"
								}
							}
						}
					},
					"404": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_404"
								}
							}
						}
					},
					"406": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_406"
								}
							}
						}
					},
					"409": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_409"
								}
							}
						}
					},
					"429": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_429"
								}
							}
						}
					},
					"500": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_500"
								}
							}
						}
					},
					"503": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_503"
								}
							}
						}
					},
					"504": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_504"
								}
							}
						}
					},
					"529": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_529"
								}
							}
						}
					}
				}
			}
		},
		"/v1/rollout/unified": {
			"post": {
				"summary": "Run a unified rollout",
				"operationId": "run-unified-rollout",
				"tags": ["Internal"],
				"x-hidden": true,
				"x-noIndex": true,
				"parameters": [
					{
						"$ref": "#/components/parameters/notionVersion"
					}
				],
				"requestBody": {
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"type": "object",
								"required": ["harness", "input"],
								"description": "A unified rollout request. The harness selects the runner; inputType selects native or agentCall input and defaults to native.",
								"properties": {
									"async": {
										"type": "boolean",
										"description": "Return immediately with a rollout ID. Defaults to false, which waits up to 45 seconds for a terminal result before returning the current rollout status."
									},
									"harness": {
										"type": "string",
										"enum": ["inferenceTranscript", "agentService"]
									},
									"inputType": {
										"type": "string",
										"enum": ["native", "agentCall"],
										"description": "Input representation. `native` uses the selected harness's native payload and is the default; `agentCall` uses the shared shorthand."
									},
									"input": {
										"type": "object",
										"description": "Exactly one inline or Braintrust source: {json}, {[org], project, dataset, id}, {[org], project, logId}, or {braintrustSlug}. Inline JSON contains the selected input representation: the harness-native payload for inputType 'native' and the shared agentCall shape for inputType 'agentCall'. AgentService debugContinuation can select a recorded user message with target_event_id or a tool-result boundary with target_tool_call_id. inferenceTranscript also accepts a full Braintrust-style record. A content-shaped agentCall payload may include actorId beside content. AgentService content-shaped agentCall input may include `attachments`, a list of files sent with the message in order: `[{ \"source\": { \"type\": \"base64\", \"data\": \"<standard base64>\", \"filename\": \"chart.png\" } }]`. The filename extension selects the media type (PNG, JPEG, WebP and GIF images, PDF, CSV and text files; HEIC is rejected). Images are sent as uploaded, without resizing. Limits: 19 files, 20 MB per file, 30 MB in total, plus the server's request body limit. Requires the `gymmy_rollout_api_attachments_enabled` gate; requests with attachments are rejected when it is off."
									},
									"actorId": {
										"type": "string",
										"format": "uuid",
										"description": "Workspace member override for content-shaped agentCall inputs. Takes precedence over input.actorId. When neither is present, uses the user associated with the API actor."
									},
									"execution": {
										"type": "object",
										"properties": {
											"statsig_config_overrides": {
												"type": "object",
												"maxProperties": 32,
												"additionalProperties": {
													"type": "object"
												},
												"description": "Execution-scoped Agent Service dynamic configs and Notion experiment parameter objects, including signed MCP calls. Use {group: 'control'} for an experiment group. Combined gate/config metadata is limited to 4096 bytes."
											},
											"statsig_gate_overrides": {
												"type": "object",
												"maxProperties": 32,
												"additionalProperties": {
													"type": "boolean"
												},
												"description": "Overrides gate checks through the AgentService experiment-service wrapper. Core and internal MCP gate checks keep their normal values. Requires agent_service_feature_gate_overrides outside local development."
											},
											"model": {
												"type": "string",
												"description": "Exact Notion model name, such as `orange-mousse`. Mutually exclusive with `vendorModelName`. Omit both to use the harness default."
											},
											"vendorModelName": {
												"type": "string",
												"description": "Active production vendor model name or registered alias, such as `gpt-5.6-sol`. Resolved to a Notion preset before either harness executes. Mutually exclusive with `model`; `reasoningEffort` independently overrides the selected preset."
											},
											"subagentModel": {
												"type": "string",
												"description": "Exact Notion model name for subagents. Supported only on inferenceTranscript; agentService rejects this option before enqueueing."
											},
											"rawVendorOverride": {},
											"reasoningEffort": {
												"type": "string",
												"description": "Optional reasoning override. Requires `model` or `vendorModelName` and must be supported by the selected Notion preset. Omit to retain that preset's settings."
											},
											"toolPolicy": {
												"type": "string",
												"enum": ["auto", "readOnly"]
											},
											"harnessOptions": {
												"type": "object",
												"description": "Options specific to the selected harness. AgentService supports `rolloutAgentComputer` and local-only `evalSession`; inferenceTranscript has its own options.",
												"properties": {
													"allowedTools": {
														"type": "object",
														"description": "Allow only the listed exact server/function pairs. An empty object allows no tools. Mutually exclusive with disabledTools.",
														"additionalProperties": {
															"type": "array",
															"items": {
																"type": "string"
															}
														}
													},
													"disabledTools": {
														"type": "object",
														"description": "Hide and block the listed exact server/function pairs, such as {notion: [search_notion_search]}. Unsupported selectors are rejected.",
														"additionalProperties": {
															"type": "array",
															"items": {
																"type": "string"
															}
														}
													},
													"stopBeforeTools": {
														"type": "object",
														"description": "Keep selected functions visible and pause the whole round before execution. Availability restrictions take precedence. Local native selectors use the native server name, such as {native: [bash, mcp_run_tool]}.",
														"additionalProperties": {
															"type": "array",
															"items": {
																"type": "string"
															}
														}
													},
													"defaultStopBeforeTools": {
														"type": "boolean",
														"description": "Pause before any available tool, including native functions and MCP discovery. Omitted or false uses selective stopping on thread-backed rollouts."
													},
													"evalSession": {
														"type": "boolean",
														"description": "For local AgentService agentCall, initialEvents, and debugContinuation requests, execute against isolated eval-session state. Enabled tools without verified isolation must be disabled or selected for stopping."
													},
													"promptInjectionScanningEnabled": {
														"type": "boolean",
														"description": "For AgentService native (non-agentCall) requests, disable the production prompt-injection scan callback. Defaults to true."
													},
													"rolloutAgentComputer": {
														"type": "object",
														"description": "For AgentService personal-agent agentCall requests, the session's computer. `{ \"mode\": \"none\" }` runs without a computer or its tools, such as `bash`. `{ \"mode\": \"offline\" }` runs on a Vercel sandbox with no network access, no ntn, no backups, and no way to request internet access. Defaults to offline. When the `gymmy_enable_rollout_agent_computer` gate is off, the session runs without a computer and requesting one is rejected. Not supported for custom agents or native `initialEvents` input; `debugContinuation` clones never have a computer.",
														"properties": {
															"mode": {
																"type": "string",
																"enum": ["none", "offline"]
															}
														},
														"required": ["mode"],
														"additionalProperties": false
													}
												}
											}
										}
									},
									"preprocessors": {
										"type": "array",
										"items": {
											"type": "object"
										}
									},
									"graders": {
										"type": "object",
										"description": "Grader configuration keyed by grader name. Each value is one argument object or an array of argument objects for repeated grader runs.",
										"properties": {
											"toolCallPresence": {
												"oneOf": [
													{
														"type": "object"
													},
													{
														"type": "array",
														"items": {
															"type": "object"
														}
													}
												]
											},
											"regexMatch": {
												"oneOf": [
													{
														"type": "object"
													},
													{
														"type": "array",
														"items": {
															"type": "object"
														}
													}
												]
											},
											"mustacheJudgePrompt": {
												"oneOf": [
													{
														"type": "object"
													},
													{
														"type": "array",
														"items": {
															"type": "object"
														}
													}
												]
											},
											"weightedAssertions": {
												"oneOf": [
													{
														"type": "object"
													},
													{
														"type": "array",
														"items": {
															"type": "object"
														}
													}
												]
											}
										},
										"additionalProperties": false
									},
									"braintrust": {
										"oneOf": [
											{
												"type": "object",
												"required": ["log"],
												"properties": {
													"log": {
														"type": "boolean"
													},
													"project": {
														"type": "string"
													},
													"tags": {
														"type": "array",
														"items": {
															"type": "string"
														}
													}
												}
											},
											{
												"type": "object",
												"required": ["experiment"],
												"properties": {
													"experiment": {
														"type": "string"
													},
													"project": {
														"type": "string"
													},
													"tags": {
														"type": "array",
														"items": {
															"type": "string"
														}
													}
												}
											}
										]
									},
									"response": {
										"type": "object",
										"additionalProperties": false,
										"properties": {
											"countsOnly": {
												"type": "boolean",
												"description": "AgentService only: return status and counts without content."
											},
											"raw": {
												"type": "boolean"
											},
											"progress": {
												"type": "boolean",
												"description": "Include revisioned harness and grader progress in asynchronous polling responses, including the completed response."
											},
											"input": {
												"type": "boolean",
												"description": "Include the executed harness-native input. For inferenceTranscript sources, this is the record's input field rather than the full record."
											},
											"xml": {
												"type": "object",
												"additionalProperties": false,
												"properties": {
													"input": {
														"type": "boolean",
														"description": "Include the XML representation of the rollout input."
													},
													"output": {
														"type": "boolean",
														"description": "Include the XML representation of the rollout output."
													},
													"all": {
														"type": "boolean",
														"description": "Include the XML representation of both the rollout input and output."
													}
												}
											},
											"operations": {
												"type": "boolean",
												"description": "Include captured record operations in response metadata for Agent Service `agentCall` eval-session runs. False or omitted is a no-op."
											},
											"workspaceDelta": {
												"type": "boolean",
												"description": "Set to true only for local Agent Service `agentCall` requests with `execution.harnessOptions.evalSession: true`; false or omitted is a no-op."
											}
										}
									}
								}
							}
						}
					}
				},
				"responses": {
					"200": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"rolloutId": {
											"type": "string",
											"description": "Identifier for this rollout. Use it with GET /v1/rollout/:rollout_id when the result is not terminal."
										},
										"status": {
											"type": "string",
											"enum": ["waiting", "running", "complete", "failed"],
											"description": "Current status of the rollout. Rollouts progress through waiting, running, and then complete or failed."
										},
										"result": {
											"type": "object",
											"properties": {
												"output": {
													"description": "Rollout output."
												},
												"id": {
													"type": "string",
													"description": "Unique execution ID. Present for unified rollout results."
												},
												"input": {
													"description": "Original rollout input. Omitted unless explicitly requested via `response.input`."
												},
												"scores": {
													"description": "Grader results as name-to-score mappings."
												},
												"metadata": {
													"description": "Rollout metadata. Includes post-processor results, grader debug info, raw inference capture under `metadata.logging.rawInferences`, and `metadata.traceUrl` after a successful opt-in Braintrust logging flush."
												},
												"workspaceDelta": {
													"type": "object",
													"properties": {
														"schemaVersion": {
															"type": "number",
															"const": 1,
															"description": "Workspace-delta schema version."
														},
														"completeness": {
															"type": "string",
															"enum": ["complete", "partial", "unevaluable"],
															"description": "Whether the delta contains complete, partial, or unevaluable evidence."
														},
														"resources": {
															"type": "array",
															"items": {},
															"description": "Each entry describes a page or database change. It includes a resource identity, change type, optional displayName and aspects, records, and operationGroupIds. Each record has a pointer, change type, and optional before and after snapshots. Block snapshots keep type, alive, properties, content, format, and additional_property_ids. Collection snapshots keep name, description, icon, cover, schema, alive, format, additional_property_ids, additional_deleted_property_ids, and template_pages. Collection-view snapshots keep type, name, page_sort, alive, format, and query2. Block-property-value snapshots keep property_short_id and property_value. Collection-property-schema snapshots keep alive, property_short_id, and property_schema. The projection removes these top-level fields: permissions, actor IDs, parent and space IDs, timestamps, versions, and deleted-schema metadata. Selected nested values pass through without filtering. They can still contain IDs or other metadata."
														},
														"operationGroups": {
															"type": "array",
															"items": {},
															"description": "Each group links a tool call to resource changes. It has an id, source, and operations. Each operation keeps pointer, relatedPointers, command, path, and deletesPage when present. The projection removes operation arguments and unknown fields."
														},
														"warnings": {
															"type": "array",
															"items": {},
															"description": "Reasons the workspace-delta evidence is partial or unevaluable."
														}
													},
													"additionalProperties": false,
													"required": [
														"schemaVersion",
														"completeness",
														"resources",
														"operationGroups",
														"warnings"
													],
													"description": "Versioned workspace delta for an Agent Service agentCall rollout. Record snapshots keep page content, changed properties, and schema fields for review. The projection removes selected top-level store fields, such as permissions, actor IDs, parent and space IDs, timestamps, versions, and deleted-schema metadata. It copies selected nested values without filtering them. Nested values can still contain IDs or other metadata. The service reads the canonical baseline after the eval session. Edits to a changed record at the same time can affect which changes appear. Completeness and warnings describe operation replay and evidence limits. They do not detect concurrent edits to the canonical workspace. The API returns raw operations only when you request them separately."
												}
											},
											"additionalProperties": false,
											"required": ["output"],
											"description": "Rollout result loaded from AI logging S3. Present when status is `complete`."
										},
										"error": {
											"type": "string",
											"description": "Bounded failure message. Present when status is `failed`, including when the AI logging S3 output payload is no longer readable."
										},
										"progress": {
											"description": "Latest revisioned harness and grader progress. Present while an asynchronous rollout is running and on completion when progress was requested and is available."
										}
									},
									"additionalProperties": false,
									"required": ["rolloutId", "status"]
								}
							}
						}
					},
					"400": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_400"
								}
							}
						}
					},
					"401": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_401"
								}
							}
						}
					},
					"403": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_403"
								}
							}
						}
					},
					"404": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_404"
								}
							}
						}
					},
					"406": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_406"
								}
							}
						}
					},
					"409": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_409"
								}
							}
						}
					},
					"429": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_429"
								}
							}
						}
					},
					"500": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_500"
								}
							}
						}
					},
					"503": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_503"
								}
							}
						}
					},
					"504": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_504"
								}
							}
						}
					},
					"529": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_529"
								}
							}
						}
					}
				}
			}
		},
		"/v1/external_agent_stub/{agent_id}/sessions/{session_id}/messages": {
			"post": {
				"summary": "Send external agent stub session message",
				"operationId": "send-external-agent-stub-session-message",
				"tags": ["Internal"],
				"x-hidden": true,
				"x-noIndex": true,
				"parameters": [
					{
						"name": "agent_id",
						"in": "path",
						"required": true,
						"schema": {
							"oneOf": [
								{
									"$ref": "#/components/schemas/idRequest"
								},
								{
									"type": "string",
									"const": "33333333-3333-3333-3333-333333333333",
									"description": "Always `33333333-3333-3333-3333-333333333333`"
								}
							],
							"description": "The ID of the agent backing this external agent session."
						}
					},
					{
						"name": "session_id",
						"in": "path",
						"required": true,
						"schema": {
							"$ref": "#/components/schemas/idRequest",
							"description": "The provider-owned session ID returned when the session was created."
						}
					},
					{
						"$ref": "#/components/parameters/notionVersion"
					}
				],
				"requestBody": {
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"type": "object",
								"properties": {
									"message": {
										"type": "string",
										"maxLength": 10000,
										"description": "Text message to send to the agent."
									},
									"client_message_id": {
										"type": "string",
										"maxLength": 200,
										"description": "Idempotency key for this message submission. Accepted but not yet used for deduplication by the stub."
									}
								},
								"required": ["message"]
							}
						}
					}
				},
				"responses": {
					"200": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"accepted": {
											"type": "boolean"
										},
										"run_id": {
											"type": "string"
										}
									},
									"additionalProperties": false,
									"required": ["accepted"]
								}
							}
						}
					},
					"400": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_400"
								}
							}
						}
					},
					"401": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_401"
								}
							}
						}
					},
					"403": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_403"
								}
							}
						}
					},
					"404": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_404"
								}
							}
						}
					},
					"406": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_406"
								}
							}
						}
					},
					"409": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_409"
								}
							}
						}
					},
					"429": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_429"
								}
							}
						}
					},
					"500": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_500"
								}
							}
						}
					},
					"503": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_503"
								}
							}
						}
					},
					"504": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_504"
								}
							}
						}
					},
					"529": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_529"
								}
							}
						}
					}
				},
				"x-notion-docs-ref": "https://developers.notion.com/reference/unreleased/external-agent-apis/send-external-agent-session-message"
			}
		},
		"/v1/external_agent_stub/{agent_id}/sessions/{session_id}/messages/stream": {
			"post": {
				"summary": "Send external agent stub session message (streaming)",
				"operationId": "send-external-agent-stub-session-message-stream",
				"tags": ["Internal"],
				"x-hidden": true,
				"x-noIndex": true,
				"parameters": [
					{
						"name": "agent_id",
						"in": "path",
						"required": true,
						"schema": {
							"oneOf": [
								{
									"$ref": "#/components/schemas/idRequest"
								},
								{
									"type": "string",
									"const": "33333333-3333-3333-3333-333333333333",
									"description": "Always `33333333-3333-3333-3333-333333333333`"
								}
							],
							"description": "The ID of the agent backing this external agent session."
						}
					},
					{
						"name": "session_id",
						"in": "path",
						"required": true,
						"schema": {
							"$ref": "#/components/schemas/idRequest",
							"description": "The provider-owned session ID returned when the session was created."
						}
					},
					{
						"$ref": "#/components/parameters/notionVersion"
					}
				],
				"requestBody": {
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"type": "object",
								"properties": {
									"message": {
										"type": "string",
										"maxLength": 10000,
										"description": "Text message to send to the agent."
									},
									"client_message_id": {
										"type": "string",
										"maxLength": 200,
										"description": "Idempotency key for this message submission. Accepted but not yet used for deduplication by the stub."
									}
								},
								"required": ["message"]
							}
						}
					}
				},
				"responses": {
					"200": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"additionalProperties": true,
									"properties": {
										"type": {
											"type": "string"
										}
									},
									"required": ["type"],
									"description": "Schema of a single stream chunk object. The actual response is an NDJSON stream of these objects."
								}
							},
							"application/x-ndjson": {
								"schema": {
									"type": "string",
									"description": "Newline-delimited JSON (NDJSON) stream. Each line is a JSON-encoded chunk object."
								}
							}
						}
					}
				},
				"x-notion-docs-ref": "https://developers.notion.com/reference/unreleased/external-agent-apis/stream-external-agent-session-message"
			}
		},
		"/v1/external_agent_stub/{agent_id}/sessions": {
			"post": {
				"summary": "Start external agent stub session",
				"operationId": "start-external-agent-stub-session",
				"tags": ["Internal"],
				"x-hidden": true,
				"x-noIndex": true,
				"parameters": [
					{
						"name": "agent_id",
						"in": "path",
						"required": true,
						"schema": {
							"oneOf": [
								{
									"$ref": "#/components/schemas/idRequest"
								},
								{
									"type": "string",
									"const": "33333333-3333-3333-3333-333333333333",
									"description": "Always `33333333-3333-3333-3333-333333333333`"
								}
							],
							"description": "The ID of the agent backing this external agent session."
						}
					},
					{
						"$ref": "#/components/parameters/notionVersion"
					}
				],
				"requestBody": {
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"type": "object",
								"properties": {
									"spec_version": {
										"type": "string",
										"const": "v1",
										"description": "External Agent API wire version."
									},
									"client_reference_id": {
										"type": "string",
										"maxLength": 200,
										"description": "Idempotency key for one session-creation intent."
									},
									"configs": {
										"type": "object",
										"properties": {
											"mcp_servers": {
												"type": "array",
												"items": {
													"type": "object",
													"properties": {
														"name": {
															"type": "string",
															"minLength": 1,
															"maxLength": 200,
															"description": "MCP server name."
														},
														"server_url": {
															"type": "string",
															"maxLength": 2000,
															"description": "MCP server URL."
														},
														"credential": {
															"oneOf": [
																{
																	"type": "object",
																	"properties": {
																		"type": {
																			"type": "string",
																			"const": "vault",
																			"description": "Vault-backed credential reference."
																		},
																		"vault_id": {
																			"type": "string",
																			"maxLength": 200,
																			"description": "Provider-owned vault ID."
																		}
																	},
																	"required": ["type", "vault_id"]
																},
																{
																	"type": "object",
																	"properties": {
																		"type": {
																			"type": "string",
																			"const": "none",
																			"description": "No authorization credential."
																		}
																	},
																	"required": ["type"]
																}
															],
															"description": "Credential vault reference or deliberate no-auth."
														}
													},
													"required": ["name", "server_url", "credential"]
												},
												"maxItems": 50,
												"minItems": 1,
												"description": "The ordered MCP server configuration."
											}
										},
										"required": ["mcp_servers"],
										"description": "Vault-backed session configuration."
									},
									"model": {
										"type": "string",
										"maxLength": 200,
										"description": "Preferred model hint. The stub echoes it back and may ignore it."
									},
									"reasoning_effort": {
										"type": "string",
										"maxLength": 50,
										"description": "Preferred reasoning effort hint. The stub echoes it back and may ignore it."
									},
									"cwd": {
										"type": "string",
										"maxLength": 1000,
										"description": "Working directory hint. Not applicable to this provider; echoed back."
									},
									"locale": {
										"type": "string",
										"maxLength": 50,
										"description": "BCP 47 locale identifier such as `en-US`."
									},
									"system_prompt": {
										"type": "string",
										"maxLength": 100000,
										"description": "Session-scoped instructions for the external agent."
									}
								}
							}
						}
					}
				},
				"responses": {
					"200": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"session_id": {
											"type": "string"
										},
										"model": {
											"type": "string"
										},
										"reasoning_effort": {
											"type": "string"
										},
										"cwd": {
											"type": "string"
										},
										"last_active_at": {
											"type": "string"
										}
									},
									"additionalProperties": false,
									"required": ["session_id"]
								}
							}
						}
					},
					"400": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_400"
								}
							}
						}
					},
					"401": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_401"
								}
							}
						}
					},
					"403": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_403"
								}
							}
						}
					},
					"404": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_404"
								}
							}
						}
					},
					"406": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_406"
								}
							}
						}
					},
					"409": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_409"
								}
							}
						}
					},
					"429": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_429"
								}
							}
						}
					},
					"500": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_500"
								}
							}
						}
					},
					"503": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_503"
								}
							}
						}
					},
					"504": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_504"
								}
							}
						}
					},
					"529": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_529"
								}
							}
						}
					}
				},
				"x-notion-docs-ref": "https://developers.notion.com/reference/unreleased/external-agent-apis/start-external-agent-session"
			}
		},
		"/v1/users/transfer": {
			"post": {
				"summary": "Transfer workspace user content",
				"operationId": "transfer-user-content",
				"tags": ["Internal"],
				"x-hidden": true,
				"x-noIndex": true,
				"parameters": [
					{
						"$ref": "#/components/parameters/notionVersion"
					}
				],
				"requestBody": {
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"type": "object",
								"properties": {
									"from_user_id": {
										"$ref": "#/components/schemas/idRequest",
										"description": "The ID of the source user to transfer content from."
									},
									"to_user_id": {
										"$ref": "#/components/schemas/idRequest",
										"description": "The ID of the destination user to transfer content to."
									},
									"content_types": {
										"type": "array",
										"items": {
											"type": "string",
											"enum": ["pages", "agents"],
											"description": "One of: `pages`, `agents`"
										},
										"maxItems": 100,
										"description": "The content to transfer. Defaults to pages when omitted."
									}
								},
								"required": ["from_user_id", "to_user_id"]
							}
						}
					}
				},
				"responses": {
					"200": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"object": {
											"type": "string",
											"const": "content_transfer",
											"description": "The content transfer object type name."
										}
									},
									"additionalProperties": false,
									"required": ["object"]
								}
							}
						}
					},
					"400": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_400"
								}
							}
						}
					},
					"401": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_401"
								}
							}
						}
					},
					"403": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_403"
								}
							}
						}
					},
					"404": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_404"
								}
							}
						}
					},
					"406": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_406"
								}
							}
						}
					},
					"409": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_409"
								}
							}
						}
					},
					"429": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_429"
								}
							}
						}
					},
					"500": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_500"
								}
							}
						}
					},
					"503": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_503"
								}
							}
						}
					},
					"504": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_504"
								}
							}
						}
					},
					"529": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_529"
								}
							}
						}
					}
				}
			}
		},
		"/v1/pages/{page_id}/unshare_from_web": {
			"post": {
				"summary": "Unshare a page from web",
				"operationId": "unshare-page-from-web",
				"tags": ["Internal"],
				"x-hidden": true,
				"x-noIndex": true,
				"parameters": [
					{
						"name": "page_id",
						"in": "path",
						"required": true,
						"schema": {
							"$ref": "#/components/schemas/idRequest"
						}
					},
					{
						"$ref": "#/components/parameters/notionVersion"
					}
				],
				"requestBody": {
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"type": "object",
								"properties": {},
								"additionalProperties": false
							}
						}
					}
				},
				"responses": {
					"200": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"anyOf": [
										{
											"anyOf": [
												{
													"$ref": "#/components/schemas/pageObjectResponse"
												},
												{
													"$ref": "#/components/schemas/partialPageObjectResponse"
												}
											]
										},
										{
											"anyOf": [
												{
													"$ref": "#/components/schemas/partialBlockObjectResponse"
												},
												{
													"$ref": "#/components/schemas/blockObjectResponse"
												}
											]
										},
										{
											"anyOf": [
												{
													"$ref": "#/components/schemas/partialDataSourceObjectResponse"
												},
												{
													"$ref": "#/components/schemas/dataSourceObjectResponse"
												}
											]
										}
									]
								}
							}
						}
					},
					"400": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_400"
								}
							}
						}
					},
					"401": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_401"
								}
							}
						}
					},
					"403": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_403"
								}
							}
						}
					},
					"404": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_404"
								}
							}
						}
					},
					"406": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_406"
								}
							}
						}
					},
					"409": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_409"
								}
							}
						}
					},
					"429": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_429"
								}
							}
						}
					},
					"500": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_500"
								}
							}
						}
					},
					"503": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_503"
								}
							}
						}
					},
					"504": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_504"
								}
							}
						}
					},
					"529": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_529"
								}
							}
						}
					}
				}
			}
		},
		"/v1/agents/{agent_id}": {
			"patch": {
				"summary": "Update agent",
				"operationId": "update-agent",
				"tags": ["Internal"],
				"x-hidden": true,
				"x-noIndex": true,
				"parameters": [
					{
						"name": "agent_id",
						"in": "path",
						"required": true,
						"schema": {
							"oneOf": [
								{
									"$ref": "#/components/schemas/idRequest"
								},
								{
									"type": "string",
									"enum": ["notion_ai", "33333333-3333-3333-3333-333333333333"],
									"description": "One of: `notion_ai`, `33333333-3333-3333-3333-333333333333`"
								}
							],
							"description": "The agent ID (a UUID), or `notion_ai` for the personal agent. Endpoint-specific restrictions still apply."
						}
					},
					{
						"$ref": "#/components/parameters/notionVersion"
					}
				],
				"requestBody": {
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"type": "object",
								"properties": {
									"status": {
										"type": "string",
										"enum": ["active", "disabled"],
										"description": "Enable or disable the agent. Only editor-origin disables can be cleared."
									},
									"credit_limit": {
										"oneOf": [
											{
												"type": "integer"
											},
											{
												"type": "null"
											}
										],
										"description": "The per-agent credit limit as a non-negative integer, or null to clear it."
									},
									"name": {
										"type": "string",
										"description": "The agent's display name."
									},
									"description": {
										"type": "string",
										"description": "The custom agent's short description. Use an empty string to clear it."
									},
									"is_favorited": {
										"type": "boolean",
										"description": "Whether the personal-access-token owner has this agent in their favorites."
									},
									"model": {
										"oneOf": [
											{
												"type": "object",
												"properties": {
													"mode": {
														"type": "string",
														"const": "auto",
														"description": "Let Notion select the model for each run."
													}
												},
												"additionalProperties": false,
												"required": ["mode"]
											},
											{
												"type": "object",
												"properties": {
													"mode": {
														"type": "string",
														"const": "pinned",
														"description": "Use the selected model for each run after publishing the agent."
													},
													"id": {
														"type": "string",
														"description": "A public model ID, such as `claude-sonnet-5`. It must currently be available to the caller in this workspace."
													}
												},
												"additionalProperties": false,
												"required": ["mode", "id"]
											}
										],
										"description": "The model selection. Use auto to let Notion choose, or pinned with an available public model ID."
									}
								},
								"additionalProperties": false
							}
						}
					}
				},
				"responses": {
					"200": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"object": {
											"type": "string",
											"const": "agent",
											"description": "Always `agent`"
										},
										"id": {
											"anyOf": [
												{
													"$ref": "#/components/schemas/idResponse"
												},
												{
													"type": "string",
													"const": "notion_ai",
													"description": "Always `notion_ai`"
												}
											]
										},
										"agent_type": {
											"type": "string",
											"enum": [
												"notion_ai",
												"custom_agent",
												"autofill_custom_agent",
												"external"
											],
											"description": "What kind of agent this is: \"notion_ai\" is the personal agent; \"custom_agent\" is a standalone agent you chat with; \"autofill_custom_agent\" fills a database property; \"external\" runs through an external provider."
										},
										"name": {
											"type": "string"
										},
										"description": {
											"oneOf": [
												{
													"type": "string"
												},
												{
													"type": "null"
												}
											]
										},
										"instructions_page_id": {
											"oneOf": [
												{
													"$ref": "#/components/schemas/idResponse"
												},
												{
													"type": "null"
												}
											]
										},
										"icon": {
											"oneOf": [
												{
													"$ref": "#/components/schemas/pageIconResponse"
												},
												{
													"type": "object",
													"properties": {
														"type": {
															"type": "string",
															"const": "custom_agent_avatar",
															"description": "Type of icon. In this case, a custom agent avatar."
														},
														"custom_agent_avatar": {
															"type": "object",
															"properties": {
																"static_url": {
																	"type": "string",
																	"description": "The URL of the static custom agent avatar."
																},
																"animated_url": {
																	"type": "string",
																	"description": "The URL of the animated custom agent avatar."
																}
															},
															"additionalProperties": false,
															"required": ["static_url", "animated_url"],
															"description": "The static and animated URLs for the agent avatar."
														}
													},
													"additionalProperties": false,
													"required": ["type", "custom_agent_avatar"]
												},
												{
													"type": "null"
												}
											]
										},
										"model": {
											"oneOf": [
												{
													"type": "object",
													"properties": {
														"mode": {
															"type": "string",
															"const": "auto",
															"description": "Always `auto`"
														}
													},
													"additionalProperties": false,
													"required": ["mode"]
												},
												{
													"type": "object",
													"properties": {
														"mode": {
															"type": "string",
															"const": "pinned",
															"description": "Always `pinned`"
														},
														"id": {
															"oneOf": [
																{
																	"type": "string"
																},
																{
																	"type": "null"
																}
															],
															"description": "The public model this agent maps to (e.g. \"claude-sonnet-5\"), or null for a pre-release / early-access model."
														}
													},
													"additionalProperties": false,
													"required": ["mode", "id"]
												}
											],
											"description": "The model the agent runs on: auto (Notion selects) or a pinned model."
										},
										"connections": {
											"type": "array",
											"items": {
												"oneOf": [
													{
														"type": "object",
														"properties": {
															"type": {
																"type": "string",
																"const": "notion",
																"description": "Always `notion`"
															},
															"name": {
																"type": "string"
															},
															"account": {
																"type": "null"
															},
															"permissions": {
																"type": "array",
																"items": {
																	"type": "object",
																	"properties": {
																		"target": {
																			"oneOf": [
																				{
																					"type": "object",
																					"properties": {
																						"type": {
																							"type": "string",
																							"const": "page",
																							"description": "Always `page`"
																						},
																						"id": {
																							"type": "string"
																						}
																					},
																					"additionalProperties": false,
																					"required": ["type", "id"]
																				},
																				{
																					"type": "object",
																					"properties": {
																						"type": {
																							"type": "string",
																							"const": "database_property",
																							"description": "Always `database_property`"
																						},
																						"data_source_id": {
																							"type": "string"
																						},
																						"property_id": {
																							"type": "string"
																						}
																					},
																					"additionalProperties": false,
																					"required": [
																						"type",
																						"data_source_id",
																						"property_id"
																					]
																				},
																				{
																					"type": "object",
																					"properties": {
																						"type": {
																							"type": "string",
																							"const": "agent",
																							"description": "Always `agent`"
																						},
																						"id": {
																							"type": "string"
																						}
																					},
																					"additionalProperties": false,
																					"required": ["type", "id"]
																				},
																				{
																					"type": "object",
																					"properties": {
																						"type": {
																							"type": "string",
																							"const": "workspace",
																							"description": "Always `workspace`"
																						}
																					},
																					"additionalProperties": false,
																					"required": ["type"]
																				},
																				{
																					"type": "object",
																					"properties": {
																						"type": {
																							"type": "string",
																							"const": "owner_private_pages",
																							"description": "Always `owner_private_pages`"
																						}
																					},
																					"additionalProperties": false,
																					"required": ["type"]
																				},
																				{
																					"type": "object",
																					"properties": {
																						"type": {
																							"type": "string",
																							"const": "web_search",
																							"description": "Always `web_search`"
																						},
																						"allowed_domains": {
																							"oneOf": [
																								{
																									"type": "array",
																									"items": {
																										"type": "string"
																									},
																									"maxItems": 100
																								},
																								{
																									"type": "null"
																								}
																							],
																							"description": "Domains web search is restricted to, or null when unrestricted."
																						}
																					},
																					"additionalProperties": false,
																					"required": [
																						"type",
																						"allowed_domains"
																					]
																				},
																				{
																					"type": "object",
																					"properties": {
																						"type": {
																							"type": "string",
																							"const": "notion_help_docs_search",
																							"description": "Always `notion_help_docs_search`"
																						}
																					},
																					"additionalProperties": false,
																					"required": ["type"]
																				}
																			]
																		},
																		"scopes": {
																			"type": "array",
																			"items": {
																				"type": "string"
																			},
																			"maxItems": 100,
																			"description": "Content roles (\"reader\" | \"comment_only\" | \"read_and_write\" | \"editor\") for scoped targets, or search verbs (\"allow\" | \"disallow\") for the search targets."
																		}
																	},
																	"additionalProperties": false,
																	"required": ["target", "scopes"]
																},
																"maxItems": 100
															}
														},
														"additionalProperties": false,
														"required": [
															"type",
															"name",
															"account",
															"permissions"
														]
													},
													{
														"type": "object",
														"properties": {
															"type": {
																"type": "string",
																"const": "slack",
																"description": "Always `slack`"
															},
															"name": {
																"type": "string"
															},
															"account": {
																"oneOf": [
																	{
																		"type": "object",
																		"properties": {
																			"type": {
																				"type": "string",
																				"const": "slack_workspace",
																				"description": "Always `slack_workspace`"
																			},
																			"team_id": {
																				"type": "string"
																			}
																		},
																		"additionalProperties": false,
																		"required": ["type", "team_id"]
																	},
																	{
																		"type": "string",
																		"const": "hidden",
																		"description": "Always `hidden`"
																	},
																	{
																		"type": "null"
																	}
																],
																"description": "The linked Slack workspace, null when none is linked, or \"hidden\" when the caller lacks edit access to the agent."
															},
															"permissions": {
																"type": "array",
																"items": {
																	"type": "object",
																	"properties": {
																		"target": {
																			"oneOf": [
																				{
																					"type": "object",
																					"properties": {
																						"type": {
																							"type": "string",
																							"const": "slack_channel",
																							"description": "Always `slack_channel`"
																						},
																						"id": {
																							"type": "string"
																						}
																					},
																					"additionalProperties": false,
																					"required": ["type", "id"]
																				},
																				{
																					"type": "object",
																					"properties": {
																						"type": {
																							"type": "string",
																							"const": "slack_all_public_channels",
																							"description": "Always `slack_all_public_channels`"
																						}
																					},
																					"additionalProperties": false,
																					"required": ["type"]
																				},
																				{
																					"type": "object",
																					"properties": {
																						"type": {
																							"type": "string",
																							"const": "slack_all_channels",
																							"description": "Always `slack_all_channels`"
																						}
																					},
																					"additionalProperties": false,
																					"required": ["type"]
																				}
																			]
																		},
																		"scopes": {
																			"type": "array",
																			"items": {
																				"type": "string"
																			},
																			"maxItems": 100,
																			"description": "Slack verbs granted on this target (\"read\" | \"write\" | \"reply_in_thread\" | \"react\")."
																		}
																	},
																	"additionalProperties": false,
																	"required": ["target", "scopes"]
																},
																"maxItems": 100
															}
														},
														"additionalProperties": false,
														"required": [
															"type",
															"name",
															"account",
															"permissions"
														]
													},
													{
														"type": "object",
														"properties": {
															"type": {
																"type": "string",
																"const": "discord",
																"description": "Always `discord`"
															},
															"name": {
																"type": "string"
															},
															"account": {
																"oneOf": [
																	{
																		"type": "object",
																		"properties": {
																			"type": {
																				"type": "string",
																				"const": "discord_server",
																				"description": "Always `discord_server`"
																			},
																			"id": {
																				"type": "string"
																			}
																		},
																		"additionalProperties": false,
																		"required": ["type", "id"]
																	},
																	{
																		"type": "string",
																		"const": "hidden",
																		"description": "Always `hidden`"
																	},
																	{
																		"type": "null"
																	}
																],
																"description": "The linked Discord server, null when none is linked, or \"hidden\" when the caller lacks edit access to the agent."
															},
															"permissions": {
																"type": "array",
																"items": {
																	"type": "object",
																	"properties": {
																		"target": {
																			"oneOf": [
																				{
																					"type": "object",
																					"properties": {
																						"type": {
																							"type": "string",
																							"const": "discord_channel",
																							"description": "Always `discord_channel`"
																						},
																						"id": {
																							"type": "string"
																						}
																					},
																					"additionalProperties": false,
																					"required": ["type", "id"]
																				},
																				{
																					"type": "object",
																					"properties": {
																						"type": {
																							"type": "string",
																							"const": "discord_all_channels",
																							"description": "Always `discord_all_channels`"
																						}
																					},
																					"additionalProperties": false,
																					"required": ["type"]
																				}
																			]
																		},
																		"scopes": {
																			"type": "array",
																			"items": {
																				"type": "string"
																			},
																			"maxItems": 100,
																			"description": "Discord verbs granted on this target (\"read\" | \"write\" | \"reply_in_thread\" | \"react\")."
																		}
																	},
																	"additionalProperties": false,
																	"required": ["target", "scopes"]
																},
																"maxItems": 100
															}
														},
														"additionalProperties": false,
														"required": [
															"type",
															"name",
															"account",
															"permissions"
														]
													},
													{
														"type": "object",
														"properties": {
															"type": {
																"type": "string",
																"const": "mcp_server",
																"description": "Always `mcp_server`"
															},
															"name": {
																"type": "string"
															},
															"account": {
																"oneOf": [
																	{
																		"type": "object",
																		"properties": {
																			"type": {
																				"type": "string",
																				"const": "mcp_server",
																				"description": "Always `mcp_server`"
																			},
																			"server_host": {
																				"type": "string",
																				"description": "The MCP server host (never the full URL, which can carry credentials or private path components)."
																			}
																		},
																		"additionalProperties": false,
																		"required": ["type", "server_host"]
																	},
																	{
																		"type": "string",
																		"const": "hidden",
																		"description": "Always `hidden`"
																	},
																	{
																		"type": "null"
																	}
																],
																"description": "The MCP server host, null when none is linked, or \"hidden\" when the caller lacks edit access to the agent."
															},
															"enabled_tools": {
																"oneOf": [
																	{
																		"type": "array",
																		"items": {
																			"type": "object",
																			"properties": {
																				"name": {
																					"type": "string"
																				},
																				"title": {
																					"oneOf": [
																						{
																							"type": "string"
																						},
																						{
																							"type": "null"
																						}
																					]
																				}
																			},
																			"additionalProperties": false,
																			"required": ["name", "title"]
																		},
																		"maxItems": 100
																	},
																	{
																		"type": "string",
																		"const": "hidden",
																		"description": "Always `hidden`"
																	},
																	{
																		"type": "null"
																	}
																],
																"description": "The tools the agent may call, null when all tools are enabled (including any the server adds later), or \"hidden\" when the caller lacks edit access to the agent."
															},
															"run_tools_automatically": {
																"type": "object",
																"properties": {
																	"read": {
																		"type": "boolean",
																		"description": "Whether read tool calls run without a confirmation step."
																	},
																	"write": {
																		"type": "boolean",
																		"description": "Whether write tool calls run without a confirmation step."
																	}
																},
																"additionalProperties": false,
																"required": ["read", "write"],
																"description": "Whether read / write tool calls run without a confirmation step."
															}
														},
														"additionalProperties": false,
														"required": [
															"type",
															"name",
															"account",
															"enabled_tools",
															"run_tools_automatically"
														]
													},
													{
														"type": "object",
														"properties": {
															"type": {
																"type": "string",
																"const": "custom_mcp_server",
																"description": "Always `custom_mcp_server`"
															},
															"name": {
																"type": "string"
															},
															"account": {
																"oneOf": [
																	{
																		"type": "object",
																		"properties": {
																			"type": {
																				"type": "string",
																				"const": "mcp_server",
																				"description": "Always `mcp_server`"
																			},
																			"server_host": {
																				"type": "string",
																				"description": "The MCP server host (never the full URL, which can carry credentials or private path components)."
																			}
																		},
																		"additionalProperties": false,
																		"required": ["type", "server_host"]
																	},
																	{
																		"type": "string",
																		"const": "hidden",
																		"description": "Always `hidden`"
																	},
																	{
																		"type": "null"
																	}
																],
																"description": "The MCP server host, null when none is linked, or \"hidden\" when the caller lacks edit access to the agent."
															},
															"enabled_tools": {
																"oneOf": [
																	{
																		"type": "array",
																		"items": {
																			"type": "object",
																			"properties": {
																				"name": {
																					"type": "string"
																				},
																				"title": {
																					"oneOf": [
																						{
																							"type": "string"
																						},
																						{
																							"type": "null"
																						}
																					]
																				}
																			},
																			"additionalProperties": false,
																			"required": ["name", "title"]
																		},
																		"maxItems": 100
																	},
																	{
																		"type": "string",
																		"const": "hidden",
																		"description": "Always `hidden`"
																	},
																	{
																		"type": "null"
																	}
																],
																"description": "The tools the agent may call, null when all tools are enabled (including any the server adds later), or \"hidden\" when the caller lacks edit access to the agent."
															},
															"run_tools_automatically": {
																"type": "object",
																"properties": {
																	"read": {
																		"type": "boolean",
																		"description": "Whether read tool calls run without a confirmation step."
																	},
																	"write": {
																		"type": "boolean",
																		"description": "Whether write tool calls run without a confirmation step."
																	}
																},
																"additionalProperties": false,
																"required": ["read", "write"],
																"description": "Whether read / write tool calls run without a confirmation step."
															}
														},
														"additionalProperties": false,
														"required": [
															"type",
															"name",
															"account",
															"enabled_tools",
															"run_tools_automatically"
														]
													},
													{
														"type": "object",
														"properties": {
															"type": {
																"type": "string",
																"enum": [
																	"asana",
																	"box",
																	"calendar",
																	"computer",
																	"confluence",
																	"cursor",
																	"feedback",
																	"files",
																	"fs",
																	"github",
																	"gmail",
																	"google_calendar",
																	"google_drive",
																	"google_drive_oauth",
																	"gtm",
																	"helpdocs",
																	"images",
																	"jira",
																	"linear",
																	"mail",
																	"marketplace",
																	"memory",
																	"microsoft_teams",
																	"microsoft_teams_oauth",
																	"outlook",
																	"salesforce",
																	"search",
																	"security",
																	"sharepoint",
																	"sharepoint_oauth",
																	"shopify",
																	"skills",
																	"system",
																	"test",
																	"web",
																	"webhooks",
																	"worker",
																	"workers"
																],
																"description": "The connector's machine name (e.g. \"github\", \"google_drive\")."
															},
															"name": {
																"type": "string"
															},
															"account": {
																"oneOf": [
																	{
																		"type": "string"
																	},
																	{
																		"type": "null"
																	}
																],
																"description": "The provider-side account identifier, null when none is linked, or \"hidden\" when the caller lacks edit access to the agent."
															},
															"permissions": {
																"type": "array",
																"items": {
																	"type": "object",
																	"properties": {
																		"target": {
																			"type": "object",
																			"properties": {
																				"type": {
																					"type": "string"
																				},
																				"id": {
																					"type": "string"
																				}
																			},
																			"additionalProperties": false,
																			"required": ["type", "id"]
																		},
																		"scopes": {
																			"type": "array",
																			"items": {
																				"type": "string"
																			},
																			"maxItems": 100,
																			"description": "The scopes granted on this target."
																		}
																	},
																	"additionalProperties": false,
																	"required": ["target", "scopes"]
																},
																"maxItems": 100
															}
														},
														"additionalProperties": false,
														"required": [
															"type",
															"name",
															"account",
															"permissions"
														]
													}
												]
											},
											"maxItems": 100,
											"description": "Integrations the agent is connected to (Notion, Slack, Discord, MCP servers, and other connectors), each with an account and per-target permissions."
										},
										"status": {
											"type": "string",
											"enum": ["active", "disabled", "deleted"],
											"description": "\"active\" when the agent can run; \"disabled\" when it is paused (see pause_reason); \"deleted\" when it has been removed."
										},
										"pause_reason": {
											"oneOf": [
												{
													"type": "string",
													"enum": [
														"run_limit",
														"credit_limit",
														"runaway_credit_usage",
														"workspace_credit_limit",
														"owner_allowance_limit",
														"failure_limit",
														"mark_session_failed_autopause",
														"disabled_from_workspace_settings",
														"disabled_from_workspace_settings_but_resumable",
														"disabled_from_api",
														"disabled_from_agent_settings",
														"disabled_due_to_no_members_with_access",
														"disabled_due_to_lack_of_editors",
														"disabled_by_notion",
														"internal_error",
														"needs_user_review",
														"tool_unavailable"
													],
													"description": "One of: `run_limit`, `credit_limit`, `runaway_credit_usage`, `workspace_credit_limit`, `owner_allowance_limit`, `failure_limit`, `mark_session_failed_autopause`, `disabled_from_workspace_settings`, `disabled_from_workspace_settings_but_resumable`, `disabled_from_api`, `disabled_from_agent_settings`, `disabled_due_to_no_members_with_access`, `disabled_due_to_lack_of_editors`, `disabled_by_notion`, `internal_error`, `needs_user_review`, `tool_unavailable`"
												},
												{
													"type": "null"
												}
											],
											"description": "Why the agent is paused when status is \"disabled\" (e.g. \"credit_limit\", \"disabled_from_workspace_settings\"); null when active."
										},
										"created_by": {
											"oneOf": [
												{
													"type": "object",
													"properties": {
														"object": {
															"type": "string",
															"const": "user",
															"description": "Always `user`"
														},
														"type": {
															"type": "string",
															"const": "user",
															"description": "Always `user`"
														},
														"id": {
															"$ref": "#/components/schemas/idResponse",
															"description": "The ID of the user that created this agent."
														}
													},
													"additionalProperties": false,
													"required": ["object", "type", "id"]
												},
												{
													"type": "null"
												}
											]
										},
										"version": {
											"oneOf": [
												{
													"type": "object",
													"properties": {
														"id": {
															"$ref": "#/components/schemas/idResponse",
															"description": "The ID of the published artifact."
														},
														"number": {
															"type": "number",
															"description": "The version number."
														},
														"published_at": {
															"type": "string",
															"description": "The ISO 8601 timestamp when this version was published."
														}
													},
													"additionalProperties": false,
													"required": ["id", "number", "published_at"]
												},
												{
													"type": "null"
												}
											]
										},
										"agent_version": {
											"oneOf": [
												{
													"type": "object",
													"properties": {
														"id": {
															"$ref": "#/components/schemas/idResponse",
															"description": "The ID of the published artifact."
														},
														"number": {
															"type": "number",
															"description": "The version number."
														},
														"published_at": {
															"type": "string",
															"description": "The ISO 8601 timestamp when this version was published."
														}
													},
													"additionalProperties": false,
													"required": ["id", "number", "published_at"]
												},
												{
													"type": "null"
												}
											]
										},
										"has_unpublished_changes": {
											"oneOf": [
												{
													"type": "boolean"
												},
												{
													"type": "string",
													"const": "hidden",
													"description": "Always `hidden`"
												}
											],
											"description": "Whether the draft has edits not yet in the published version, or \"hidden\" when the caller lacks edit access to the agent."
										},
										"last_run_time": {
											"oneOf": [
												{
													"type": "string",
													"format": "date-time",
													"pattern": "^\\d{4}-\\d{2}-\\d{2}T"
												},
												{
													"type": "string",
													"const": "hidden",
													"description": "Always `hidden`"
												},
												{
													"type": "null"
												}
											],
											"description": "ISO 8601 timestamp of the agent's most recent run, null if it has never run, or \"hidden\" when the caller lacks edit access to the agent."
										},
										"last_run_at": {
											"oneOf": [
												{
													"type": "string",
													"format": "date-time",
													"pattern": "^\\d{4}-\\d{2}-\\d{2}T"
												},
												{
													"type": "string",
													"const": "hidden",
													"description": "Always `hidden`"
												},
												{
													"type": "null"
												}
											],
											"description": "ISO 8601 timestamp of the agent's most recent run, null if it has never run, or \"hidden\" when the caller lacks edit access to the agent."
										},
										"credit_limit": {
											"oneOf": [
												{
													"type": "integer",
													"minimum": 0
												},
												{
													"type": "string",
													"const": "hidden",
													"description": "Always `hidden`"
												},
												{
													"type": "null"
												}
											],
											"description": "The per-agent credit limit that applies to this agent, null when uncapped, or \"hidden\" when the caller lacks full access to the agent. This is the effective limit computed at runtime, folding in both the agent's own limit and any workspace-admin default."
										},
										"triggers": {
											"type": "array",
											"items": {
												"type": "object",
												"properties": {
													"type": {
														"type": "string",
														"description": "Machine trigger type (e.g. \"notion.agent.mentioned\", \"recurrence\", \"slack.reaction.added\")."
													},
													"enabled": {
														"type": "boolean",
														"description": "Whether this trigger is currently enabled."
													},
													"schedule": {
														"type": "object",
														"properties": {
															"frequency": {
																"type": "string",
																"description": "Base cadence unit (\"hour\" | \"day\" | \"week\" | \"month\" | \"year\")."
															},
															"interval": {
																"type": "integer",
																"minimum": 1,
																"description": "Multiplier on the frequency (e.g. every 2 weeks)."
															},
															"weekdays": {
																"type": "array",
																"items": {
																	"type": "string"
																},
																"maxItems": 100,
																"description": "Days of the week the schedule runs (e.g. \"monday\"). Present for weekly cadences and monthly weekday restrictions."
															},
															"monthdays": {
																"type": "array",
																"items": {
																	"type": "integer",
																	"minimum": 1
																},
																"maxItems": 100,
																"description": "Days of the month the schedule runs. Present for monthly monthday restrictions."
															},
															"week_numbers": {
																"type": "array",
																"items": {
																	"type": "integer"
																},
																"maxItems": 100,
																"description": "Week-of-month ordinals for a monthly weekday restriction (e.g. [2, 3] for the 2nd and 3rd occurrence); -1 means the last week."
															},
															"hour": {
																"type": "integer",
																"minimum": 0,
																"description": "Hour of day (0–23) the schedule runs."
															},
															"minute": {
																"type": "integer",
																"minimum": 0,
																"description": "Minute of the hour (0–59) the schedule runs."
															},
															"timezone": {
																"type": "string",
																"description": "IANA timezone (e.g. \"America/New_York\")."
															},
															"start_date": {
																"type": "string",
																"description": "ISO 8601 timestamp the schedule starts from."
															},
															"end": {
																"oneOf": [
																	{
																		"type": "object",
																		"properties": {
																			"type": {
																				"type": "string",
																				"const": "date",
																				"description": "Always `date`"
																			},
																			"end_at": {
																				"type": "string",
																				"description": "ISO 8601 timestamp when the schedule stops."
																			}
																		},
																		"additionalProperties": false,
																		"required": ["type", "end_at"]
																	},
																	{
																		"type": "object",
																		"properties": {
																			"type": {
																				"type": "string",
																				"const": "count",
																				"description": "Always `count`"
																			},
																			"occurrences": {
																				"type": "integer",
																				"minimum": 0,
																				"description": "Number of occurrences after which the schedule stops."
																			}
																		},
																		"additionalProperties": false,
																		"required": ["type", "occurrences"]
																	}
																],
																"description": "When the schedule stops, when it is bounded."
															}
														},
														"additionalProperties": false,
														"required": ["frequency", "interval"],
														"description": "Structured recurrence cadence. Present only for recurrence triggers."
													},
													"config": {
														"type": "object",
														"additionalProperties": {},
														"description": "Remaining per-type trigger configuration (e.g. watched channel ids, reaction config), keys in snake_case. Present only when the trigger carries such state."
													}
												},
												"additionalProperties": false,
												"required": ["type", "enabled"]
											},
											"maxItems": 100,
											"description": "The agent's configured triggers, each with a machine type, an enabled flag, and (for recurrence triggers) a structured schedule."
										},
										"is_favorited": {
											"oneOf": [
												{
													"type": "boolean"
												},
												{
													"type": "null"
												}
											],
											"description": "Whether this agent is in the caller's personal favorites, or null when the caller has no personal favorites scope."
										},
										"created_time": {
											"type": "string",
											"format": "date-time",
											"description": "Date and time when this agent was created."
										},
										"last_edited_time": {
											"type": "string",
											"format": "date-time",
											"description": "Date and time when this agent was last edited."
										},
										"instructions": {
											"oneOf": [
												{
													"type": "string"
												},
												{
													"type": "null"
												}
											],
											"description": "The agent's inline instructions when verbose=true, or null when its instructions are stored on a page."
										}
									},
									"additionalProperties": false,
									"required": [
										"object",
										"id",
										"agent_type",
										"name",
										"description",
										"instructions_page_id",
										"icon",
										"model",
										"connections",
										"status",
										"pause_reason",
										"created_by",
										"version",
										"agent_version",
										"has_unpublished_changes",
										"last_run_time",
										"last_run_at",
										"credit_limit",
										"triggers",
										"is_favorited"
									]
								}
							}
						}
					},
					"400": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_400"
								}
							}
						}
					},
					"401": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_401"
								}
							}
						}
					},
					"403": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_403"
								}
							}
						}
					},
					"404": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_404"
								}
							}
						}
					},
					"406": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_406"
								}
							}
						}
					},
					"409": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_409"
								}
							}
						}
					},
					"429": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_429"
								}
							}
						}
					},
					"500": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_500"
								}
							}
						}
					},
					"503": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_503"
								}
							}
						}
					},
					"504": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_504"
								}
							}
						}
					},
					"529": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_529"
								}
							}
						}
					}
				}
			}
		},
		"/v1/meeting_notes/{meeting_note_id}": {
			"patch": {
				"summary": "Link a full-page meeting note to a calendar event",
				"operationId": "update-meeting-note-page",
				"tags": ["Internal"],
				"x-hidden": true,
				"x-noIndex": true,
				"parameters": [
					{
						"name": "meeting_note_id",
						"in": "path",
						"required": true,
						"schema": {
							"$ref": "#/components/schemas/idRequest",
							"description": "ID of the full-page meeting note."
						}
					},
					{
						"$ref": "#/components/parameters/notionVersion"
					}
				],
				"requestBody": {
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"type": "object",
								"properties": {
									"calendar_event": {
										"type": "object",
										"properties": {
											"calendar": {
												"type": "object",
												"properties": {
													"account_id": {
														"type": "string",
														"minLength": 1,
														"description": "ID of the calendar account."
													},
													"calendar_id": {
														"type": "string",
														"minLength": 1,
														"description": "ID of the calendar."
													}
												},
												"additionalProperties": false,
												"required": ["account_id", "calendar_id"],
												"description": "The calendar the event belongs to."
											},
											"event_id": {
												"type": "string",
												"minLength": 1,
												"description": "ID of the event, as returned by the calendar tools."
											}
										},
										"additionalProperties": false,
										"required": ["calendar", "event_id"],
										"description": "Calendar event to link the meeting note to. Replaces any event it is already linked to."
									},
									"allow_other_meeting_notes": {
										"type": "boolean",
										"description": "Link even when other meeting notes are linked to the same event. Defaults to false, which returns a 409 listing them instead."
									}
								},
								"additionalProperties": false,
								"required": ["calendar_event"]
							}
						}
					}
				},
				"responses": {
					"200": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"type": "object",
									"properties": {
										"object": {
											"type": "string",
											"const": "meeting_note_page_result",
											"description": "Always \"meeting_note_page_result\"."
										},
										"meeting_note": {
											"type": "object",
											"properties": {
												"object": {
													"type": "string",
													"const": "block",
													"description": "Always \"block\"."
												},
												"id": {
													"$ref": "#/components/schemas/idResponse",
													"description": "The ID of the meeting note block."
												},
												"type": {
													"type": "string",
													"const": "meeting_notes",
													"description": "Always \"meeting_notes\"."
												},
												"meeting_notes": {
													"type": "object",
													"properties": {
														"is_full_page": {
															"type": "boolean",
															"description": "Whether this is a full-page meeting note."
														},
														"title": {
															"type": "array",
															"items": {
																"$ref": "#/components/schemas/richTextItemResponse"
															},
															"maxItems": 100,
															"description": "Title of the meeting note as rich text."
														},
														"status": {
															"type": "string",
															"enum": [
																"transcription_not_started",
																"transcription_paused",
																"transcription_in_progress",
																"transcription_failed",
																"summary_in_progress",
																"notes_ready"
															],
															"description": "Current processing status of the meeting note transcription."
														},
														"children": {
															"type": "object",
															"properties": {
																"summary_block_id": {
																	"$ref": "#/components/schemas/idResponse",
																	"description": "Block ID of the AI summary tab."
																},
																"notes_block_id": {
																	"$ref": "#/components/schemas/idResponse",
																	"description": "Block ID of the meeting notes tab."
																},
																"transcript_block_id": {
																	"$ref": "#/components/schemas/idResponse",
																	"description": "Block ID of the transcript tab."
																}
															},
															"additionalProperties": false,
															"description": "Block IDs for each tab (summary, notes, transcript)."
														},
														"calendar_event": {
															"type": "object",
															"properties": {
																"start_time": {
																	"type": "string",
																	"description": "ISO-8601 start time of the calendar event."
																},
																"end_time": {
																	"type": "string",
																	"description": "ISO-8601 end time of the calendar event."
																},
																"event_id": {
																	"type": "string",
																	"description": "ID of the calendar event, as returned by the calendar tools."
																},
																"attendees": {
																	"type": "array",
																	"items": {
																		"$ref": "#/components/schemas/idResponse"
																	},
																	"maxItems": 100,
																	"description": "List of attendee user IDs."
																}
															},
															"additionalProperties": false,
															"required": ["start_time", "end_time"],
															"description": "Calendar event metadata associated with this meeting note."
														},
														"recording": {
															"type": "object",
															"properties": {
																"start_time": {
																	"type": "string",
																	"description": "ISO-8601 timestamp when the recording started."
																},
																"end_time": {
																	"type": "string",
																	"description": "ISO-8601 timestamp when the recording ended."
																}
															},
															"additionalProperties": false,
															"description": "Start and end times of the actual recording."
														}
													},
													"additionalProperties": false,
													"required": ["is_full_page"],
													"description": "Meeting note content fields."
												},
												"created_time": {
													"type": "string",
													"description": "ISO-8601 timestamp when this meeting note was created."
												},
												"last_edited_time": {
													"type": "string",
													"description": "ISO-8601 timestamp when this meeting note was last edited."
												},
												"created_by": {
													"$ref": "#/components/schemas/partialUserObjectResponse",
													"description": "User who created this meeting note."
												},
												"last_edited_by": {
													"$ref": "#/components/schemas/partialUserObjectResponse",
													"description": "User who last edited this meeting note."
												},
												"has_children": {
													"type": "boolean",
													"description": "Whether this block has child blocks."
												},
												"in_trash": {
													"type": "boolean",
													"description": "Whether this meeting note is in the trash."
												}
											},
											"additionalProperties": false,
											"required": [
												"object",
												"id",
												"type",
												"meeting_notes",
												"created_time",
												"last_edited_time",
												"created_by",
												"last_edited_by",
												"has_children",
												"in_trash"
											],
											"description": "The full-page meeting note, as a meeting_notes block."
										},
										"other_meeting_note_ids": {
											"type": "array",
											"items": {
												"$ref": "#/components/schemas/idResponse"
											},
											"maxItems": 50,
											"description": "IDs of other full-page meeting notes you can read that are linked to the same event."
										}
									},
									"additionalProperties": false,
									"required": [
										"object",
										"meeting_note",
										"other_meeting_note_ids"
									]
								}
							}
						}
					},
					"400": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_400"
								}
							}
						}
					},
					"401": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_401"
								}
							}
						}
					},
					"403": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_403"
								}
							}
						}
					},
					"404": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_404"
								}
							}
						}
					},
					"406": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_406"
								}
							}
						}
					},
					"409": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_409"
								}
							}
						}
					},
					"429": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_429"
								}
							}
						}
					},
					"500": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_500"
								}
							}
						}
					},
					"503": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_503"
								}
							}
						}
					},
					"504": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_504"
								}
							}
						}
					},
					"529": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_529"
								}
							}
						}
					}
				}
			}
		},
		"/v1/_/pages/{page_id}/permissions": {
			"patch": {
				"summary": "Update page permissions",
				"operationId": "private-update-page-permissions",
				"tags": ["Internal"],
				"x-hidden": true,
				"x-noIndex": true,
				"parameters": [
					{
						"name": "page_id",
						"in": "path",
						"required": true,
						"schema": {
							"$ref": "#/components/schemas/idRequest"
						}
					},
					{
						"$ref": "#/components/parameters/notionVersion"
					}
				],
				"requestBody": {
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"type": "object",
								"properties": {
									"permissions": {
										"type": "array",
										"items": {
											"anyOf": [
												{
													"type": "object",
													"properties": {
														"role": {
															"type": "string",
															"enum": [
																"full_owner",
																"can_edit",
																"can_comment",
																"can_view"
															]
														},
														"type": {
															"type": "string",
															"const": "user_permission"
														},
														"user_id": {
															"type": "string",
															"format": "uuid"
														}
													},
													"required": ["role", "type", "user_id"]
												},
												{
													"type": "object",
													"properties": {
														"role": {
															"type": "string",
															"enum": [
																"full_owner",
																"can_edit",
																"can_comment",
																"can_view"
															]
														},
														"type": {
															"type": "string",
															"const": "group_permission"
														},
														"group_id": {
															"type": "string",
															"format": "uuid"
														}
													},
													"required": ["role", "type", "group_id"]
												},
												{
													"type": "object",
													"properties": {
														"role": {
															"type": "string",
															"enum": [
																"full_owner",
																"can_edit",
																"can_comment",
																"can_view"
															]
														},
														"type": {
															"type": "string",
															"const": "teamspace_owner"
														}
													},
													"required": ["role", "type"]
												},
												{
													"type": "object",
													"properties": {
														"role": {
															"type": "string",
															"enum": [
																"full_owner",
																"can_edit",
																"can_comment",
																"can_view"
															]
														},
														"type": {
															"type": "string",
															"const": "teamspace_members"
														}
													},
													"required": ["role", "type"]
												},
												{
													"type": "object",
													"properties": {
														"role": {
															"type": "string",
															"enum": [
																"full_owner",
																"can_edit",
																"can_comment",
																"can_view"
															]
														},
														"type": {
															"type": "string",
															"const": "workspace_permission"
														},
														"discoverability": {
															"type": "string",
															"enum": ["discoverable", "unlisted"]
														}
													},
													"required": ["role", "type", "discoverability"]
												}
											]
										}
									},
									"is_restricted": {
										"type": "boolean"
									}
								},
								"additionalProperties": false,
								"required": ["permissions"]
							}
						}
					}
				},
				"responses": {
					"200": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"anyOf": [
										{
											"$ref": "#/components/schemas/pageObjectResponse"
										},
										{
											"$ref": "#/components/schemas/partialPageObjectResponse"
										}
									]
								}
							}
						}
					},
					"400": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_400"
								}
							}
						}
					},
					"401": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_401"
								}
							}
						}
					},
					"403": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_403"
								}
							}
						}
					},
					"404": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_404"
								}
							}
						}
					},
					"406": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_406"
								}
							}
						}
					},
					"409": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_409"
								}
							}
						}
					},
					"429": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_429"
								}
							}
						}
					},
					"500": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_500"
								}
							}
						}
					},
					"503": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_503"
								}
							}
						}
					},
					"504": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_504"
								}
							}
						}
					},
					"529": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_529"
								}
							}
						}
					}
				}
			}
		},
		"/v1/workspace/search": {
			"post": {
				"summary": "Search a workspace",
				"operationId": "search-workspace",
				"tags": ["Internal"],
				"x-hidden": true,
				"x-noIndex": true,
				"parameters": [
					{
						"$ref": "#/components/parameters/notionVersion"
					}
				],
				"requestBody": {
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"type": "object",
								"properties": {
									"keyword": {
										"anyOf": [
											{
												"type": "string"
											},
											{
												"anyOf": [
													{
														"type": "object",
														"properties": {
															"and": {
																"type": "array",
																"items": {
																	"type": "string"
																}
															}
														},
														"additionalProperties": false,
														"required": ["and"]
													},
													{
														"type": "object",
														"properties": {
															"or": {
																"type": "array",
																"items": {
																	"type": "string"
																}
															}
														},
														"additionalProperties": false,
														"required": ["or"]
													}
												]
											},
											{
												"type": "object",
												"properties": {
													"title": {
														"type": "string"
													}
												},
												"additionalProperties": false,
												"required": ["title"]
											},
											{
												"type": "null"
											}
										]
									},
									"shared_with_ids": {
										"type": "array",
										"items": {
											"type": "string",
											"format": "uuid"
										}
									},
									"location": {
										"type": "object",
										"properties": {},
										"additionalProperties": false
									},
									"date_range_filter": {
										"type": "object",
										"properties": {},
										"additionalProperties": false
									},
									"options": {
										"type": "object",
										"properties": {},
										"additionalProperties": false
									},
									"start_cursor": {
										"type": "string",
										"format": "uuid"
									},
									"page_size": {
										"type": "number"
									},
									"result_type": {
										"type": "string",
										"enum": ["page", "database"]
									}
								},
								"additionalProperties": false
							}
						}
					}
				},
				"responses": {
					"200": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"title": "Search Result",
									"type": "object",
									"properties": {
										"type": {
											"type": "string",
											"const": "search_result"
										},
										"search_result": {
											"$ref": "#/components/schemas/emptyObject"
										},
										"object": {
											"type": "string",
											"const": "list"
										},
										"next_cursor": {
											"type": ["string", "null"]
										},
										"has_more": {
											"type": "boolean"
										},
										"results": {
											"type": "array",
											"items": {
												"type": "object",
												"properties": {
													"object": {
														"type": "string",
														"const": "search_result"
													},
													"id": {
														"type": "string",
														"format": "uuid"
													},
													"path": {
														"type": "string"
													},
													"created_time": {
														"type": "number"
													},
													"created_by": {
														"anyOf": [
															{
																"$ref": "#/components/schemas/partialUserObjectResponse"
															},
															{
																"$ref": "#/components/schemas/userObjectResponse"
															}
														]
													},
													"last_edited_by": {
														"anyOf": [
															{
																"$ref": "#/components/schemas/partialUserObjectResponse"
															},
															{
																"$ref": "#/components/schemas/userObjectResponse"
															}
														]
													},
													"last_edited_time": {
														"type": "string",
														"format": "date-time"
													},
													"deleted": {
														"type": "boolean"
													},
													"teamspace_id": {
														"type": ["string", "null"],
														"format": "uuid"
													},
													"teamspace_name": {
														"type": ["string", "null"]
													},
													"space_id": {
														"type": "string",
														"format": "uuid"
													},
													"space_name": {
														"type": "string"
													},
													"title": {
														"type": "string"
													},
													"result_type": {
														"type": "string",
														"enum": ["database", "page"]
													}
												},
												"required": [
													"object",
													"id",
													"path",
													"created_time",
													"created_by",
													"last_edited_by",
													"last_edited_time",
													"deleted",
													"teamspace_id",
													"teamspace_name",
													"space_id",
													"space_name",
													"title",
													"result_type"
												]
											}
										},
										"total": {
											"type": "number"
										}
									},
									"required": [
										"type",
										"search_result",
										"object",
										"next_cursor",
										"has_more",
										"results",
										"total"
									]
								}
							}
						}
					},
					"400": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_400"
								}
							}
						}
					},
					"401": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_401"
								}
							}
						}
					},
					"403": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_403"
								}
							}
						}
					},
					"404": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_404"
								}
							}
						}
					},
					"406": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_406"
								}
							}
						}
					},
					"409": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_409"
								}
							}
						}
					},
					"429": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_429"
								}
							}
						}
					},
					"500": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_500"
								}
							}
						}
					},
					"503": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_503"
								}
							}
						}
					},
					"504": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_504"
								}
							}
						}
					},
					"529": {
						"description": "",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/error_api_529"
								}
							}
						}
					}
				}
			}
		}
	}
}
