Skip to content

notion-create-pages silently drops date:PropertyName:start fields, causing empty date columns #121

@xiaoye-hua

Description

@xiaoye-hua

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

  1. 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
  }
}
  1. Check the created entry using notion-fetch
  2. Observe that only "date:Date:is_datetime": 0 persists
  3. 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:

  1. Create entry without dates using notion-create-pages
  2. 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:

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions