Skip to content

API-create-a-data-source and API-update-a-data-source return invalid_request_url — database creation unreliable + missing POST /v1/databases tool #218

@Odinn-partners

Description

@Odinn-partners

Summary

While building a CRM on top of the Notion MCP server, we encountered three distinct issues that make database management through the MCP unreliable:

  1. API-create-a-data-source returns HTTP 400 invalid_request_url on every call, yet occasionally creates the database anyway (inconsistent side-effect)
  2. API-update-a-data-source returns HTTP 400 invalid_request_url consistently — database properties can never be updated via MCP
  3. API-patch-block-children only supports paragraph and bulleted_list_item block types — child_database and most other Notion block types are not supported

Environment

  • MCP server: @makenotion/notion-mcp-server (official)
  • Notion API version used by MCP: 2025-09-03
  • Integration type: Internal integration (bot)
  • Workspace plan: Notion Plus
  • Client: Claude Code (claude-sonnet-4-6)

Issue 1 — API-create-a-data-source returns invalid_request_url but sometimes creates the database

Steps to reproduce

{
  "parent": { "page_id": "311804f8-2911-8032-8eb6-dc30052e7bbd" },
  "title": [{ "type": "text", "text": { "content": "Test DB" } }],
  "properties": {
    "Name": { "title": {} }
  }
}

Expected behavior

HTTP 200 with the created database object.

Actual behavior

{
  "status": 400,
  "object": "error",
  "code": "invalid_request_url",
  "message": "Invalid request URL.",
  "request_id": "..."
}

During our session, the first call created the database despite returning 400. All subsequent calls (6+ attempts, varying payload size and page_id format) returned 400 and created nothing. The behavior is non-deterministic — the database was created as a side-effect of a failing request.

Root cause hypothesis

The MCP server appears to call a URL like /v1/data-sources instead of the standard POST /v1/databases. The Notion API returns invalid_request_url because /v1/data-sources does not exist. The one successful creation may have been a retry hitting the correct endpoint, or a race condition.


Issue 2 — API-update-a-data-source returns invalid_request_url consistently

Steps to reproduce

{
  "data_source_id": "<valid-database-id>",
  "properties": {
    "New Field": { "rich_text": {} }
  }
}

Expected behavior

HTTP 200 with updated database object (equivalent to PATCH /v1/databases/{id}).

Actual behavior

{
  "status": 400,
  "object": "error",
  "code": "invalid_request_url",
  "message": "Invalid request URL."
}

This completely blocks any post-creation property management via MCP.


Issue 3 — API-patch-block-children only supports 2 block types

Description

The children parameter of API-patch-block-children is typed as:

anyOf: [paragraphBlockRequest, bulletedListItemBlockRequest]

This means only paragraph and bulleted_list_item can be appended. Notably missing:

  • child_database (which would have served as a workaround for Issue 1)
  • heading_1, heading_2, heading_3
  • numbered_list_item, toggle, callout, divider, image, code

The Notion API supports 20+ block types — the MCP exposes only 2.


Workaround

We bypassed the MCP entirely by calling POST /v1/databases directly via Node.js HTTPS using the integration token — which worked correctly with Notion-Version: 2022-06-28.


Suggestions

  1. Rename API-create-a-data-sourceAPI-create-a-database and map it to POST /v1/databases (not /v1/data-sources)
  2. Rename API-update-a-data-sourceAPI-update-a-database and map it to PATCH /v1/databases/{id}
  3. Expand API-patch-block-children to support all block types documented in the Notion API
  4. If "data source" is intentional (Notion AI feature), add a separate API-create-a-database tool for the standard database creation endpoint

Discovered while building a CRM with Claude Code using the official Notion MCP server. Happy to provide the full session log if useful.

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