Notion MCP Tool Failures: validation_error on Property Keys & API-patch-page Schema Mismatch

Subject: Notion MCP Tool Failures: validation_error on Property Keys & API-patch-page Schema Mismatch

Environment:

  • Model: Gemini (via IDE extension/MCP Client)

  • MCP Server: notionMCP / notion_bSSp

  • Integration: Notion API

Description

I am encountering persistent failures when attempting to create or update pages within a Notion Database using the Gemini API via the Notion MCP server.

The model appears to struggle with the JSON schema required for Notion database properties, specifically regarding key formatting and tool definition rigidity. Despite multiple attempts and workarounds (creating a private page then moving it), the model could not successfully populate the database properties.

Key Issues Identified

1. Model Hallucinating Quotes in JSON Keys (Property Name Mismatch)

When using notion-create-pages, the model repeatedly formatted JSON keys with embedded single quotes for properties containing spaces. The Notion API interpreted these quotes literally as part of the property name, resulting in validation_error.

  • Model Attempt: "'Content Stage'": "Planning"

  • Expected Format: "Content Stage": "Planning"

  • API Error: Property "'Content Stage'" not found (The API looked for a column literally named 'Content Stage' including the single quotes).

2. API-patch-page Tool Schema is Too Strict

When attempting a workaround (updating a page after creation), the API-patch-page tool failed because the underlying MCP tool definition appears to mark title as a required field, even for update (PATCH) operations where only custom properties (like status or priority) are being modified.

  • Error: params/properties must have required property 'title'

Logs & Reproduction

Attempt 1: Create Page in Database

Function Call:

{
  "name": "notion-create-pages",
  "args": {
    "pages": [
      {
        "properties": {
          "'Content Stage'": "Planning",  
          "'Market Focus'": "Spanish Market",
          "Priority": "High"
        },
        "parent": { "database_id": "[REDACTED_DB_UUID]" }
      }
    ]
  }
}


API Response:

{
  "code": "validation_error",
  "status": 400,
  "message": "Property \"'Content Stage'\" not found"
}


Attempt 2: Update Properties (Workaround)

Function Call:

{
  "name": "API-patch-page",
  "args": {
    "page_id": "[REDACTED_PAGE_UUID]",
    "properties": {
      "Priority": { "select": { "name": "High" } }
    }
  }
}


Tool Error:

params/properties must have required property 'title'


Request

  1. Model Tuning: Can the model be tuned to handle Notion property keys with spaces correctly (i.e., not wrapping the key string in single quotes inside the JSON object)?

  2. MCP Server Definition: Please review the API-patch-page (and notion-update-page) schemas in the MCP server. The title property should likely be optional for PATCH requests to allow for updating metadata/status columns without restating the document title.

Hello,

The model appears to be incorrectly formatting JSON keys containing spaces by wrapping them in single quotes. Here are a few suggestions that may assist you:

  • Prompt Engineering: Explicitly instruct the model in your system prompt or current session to strictly adhere to standard JSON formatting for keys. Example system prompt: “When generating JSON for Notion properties, ensure all keys are enclosed in double quotes only. Do not put single quotes inside the key name, even if the property has spaces (e.g., use "Content Stage" not "‘Content Stage’").”
  • Pre-processing: Rename the properties in your Notion Database to eliminate spaces (e.g., change Content Stage to Content_Stage). This removes the ambiguity that causes the model to “hallucinate” the need for extra quoting, which may increase reliability.
  • Post-processing: Add a post-processing step to fix property names by removing single quotes from the extracted strings.