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
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions