-
Notifications
You must be signed in to change notification settings - Fork 296
Description
Bug Description
When creating Notion database entries using the notion-create-pages
tool with date properties in expanded format, the Date columns appear completely empty in the Notion UI, despite the API returning successful creation responses.
Environment
- Tool:
notion-create-pages
(MCP) - Notion API Version: 2022-06-28
- Date: September 16, 2025
- Impact: Critical - Date columns appear empty in Notion UI
🐛 Problem Description
When creating Notion database entries using the MCP (Model Context Protocol) notion-create-pages
tool with date properties, the Date columns appear completely empty in the Notion UI, despite the API returning successful creation responses.
Symptoms
- ✅
notion-create-pages
returns successful response - ❌ Date column shows empty in Notion UI
- ❌ Only partial date properties saved (
date:PropertyName:is_datetime
only) - ❌ Missing crucial
date:PropertyName:start
field in fetch results
Steps to Reproduce
- Create a database entry with date properties using expanded format:
{
"properties": {
"Activity": "Test Activity",
"date:Date:start": "2025-10-10",
"date:Date:is_datetime": 0
}
}
- Check the created entry using
notion-fetch
- Observe that only
"date:Date:is_datetime": 0
persists - Verify in Notion UI that Date column appears empty
Expected Behavior
Both date:Date:start
and date:Date:is_datetime
should persist, and the date should display correctly in Notion UI.
Actual Behavior
Only date:Date:is_datetime
persists; date:Date:start
is silently dropped, resulting in empty date columns.
Root Cause Analysis
The notion-create-pages
MCP tool silently drops the date:PropertyName:start
field during creation, while preserving other expanded date properties like date:PropertyName:is_datetime
. This appears to be a MCP serialization issue where the tool incorrectly processes expanded date properties.
Evidence
✅ Working Example (using different property name):
{
"date:Day:start": "2025-07-26",
"date:Day:is_datetime": 0
}
❌ Broken Example (same format, different property name):
{
"date:Date:is_datetime": 0
// Missing: "date:Date:start" field silently dropped!
}
Workaround
Use notion-update-page
instead, which works correctly:
- Create entry without dates using
notion-create-pages
- Update with dates using
notion-update-page
:
{
"page_id": "created-page-id",
"command": "update_properties",
"properties": {
"date:Date:start": "2025-10-10"
}
}
Related Issues
This appears related to the serialization bugs mentioned in:
- Issue Parameter serialization bug: Object parameters received as strings in create-pages and move-pages tools #82: Parameter serialization bug
- Issue update-pages automatically parses the body object as a string in Claude Desktop. #67: Update-pages parsing bug
Additional Details
Schema Evidence
The SQLite schema shows all required fields, but only some are saved:
"date:Date:start" TEXT, -- ❌ NOT SAVED by create-pages
"date:Date:end" TEXT, -- ❌ NOT SAVED by create-pages
"date:Date:is_datetime" INTEGER -- ✅ SAVED by create-pages
Impact Assessment
- Affected: All date properties in any Notion database using
notion-create-pages
- Scope: All expanded property formats (
date:X:start
,date:X:end
, etc.) - Workaround: Use two-step process (create then update) until fixed
Testing Results
- Before Fix:
notion-fetch
shows only"date:Date:is_datetime": 0
- After Fix:
notion-fetch
shows both"date:Date:start": "2025-10-10"
and"date:Date:is_datetime": 0