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
-
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)?
-
MCP Server Definition: Please review the
API-patch-page(andnotion-update-page) schemas in the MCP server. Thetitleproperty should likely be optional for PATCH requests to allow for updating metadata/status columns without restating the document title.