Skip to main content
Glama
davidlinjiahao

notion-enhanced

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
NOTION_TOKENYesYour Notion integration token

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
get_database_schemaC

Get the schema of a Notion database with all property definitions.

Args: database_id: The ID of the Notion database

Returns: Dict with database title and properties schema

query_databaseA

Query a Notion database with optional filter and sorts.

Args: database_id: The ID of the Notion database filter: Optional Notion filter object (see Notion API docs) sorts: Optional list of sort objects page_size: Number of results per page (max 100) start_cursor: Cursor for pagination (from previous query's next_cursor) fetch_all: If True, auto-paginate to fetch ALL results. If False, return single page with pagination info. Default True.

Returns: Dict with: - results: List of database rows with parsed properties - total_count: Number of results returned - has_more: Whether more results exist (only when fetch_all=False) - next_cursor: Cursor for next page (only when fetch_all=False and has_more=True)

create_database_rowA

Create a new row in a Notion database with full property type support.

Args: database_id: The ID of the Notion database properties: Dict of property_name -> value. Supported types: - title: str - rich_text: str - number: int or float - select: str (option name) - multi_select: list[str] (option names) - date: str (ISO 8601) or {"start": str, "end": str} - checkbox: bool - url: str - email: str - phone_number: str - status: str (status name) - files: list[str] (URLs) - relation: list[str] (page IDs) - people: list[str] (user IDs) content: Optional markdown content to add to the page body

Returns: Created page with ID and URL

update_database_rowB

Update properties on an existing Notion database row.

Args: page_id: The ID of the page/row to update properties: Dict of property_name -> value to update

Returns: Updated page info

append_blocksB

Append blocks to a Notion page.

Args: page_id: The ID of the page to append to blocks: List of block objects. Each block should have: - type: Block type (paragraph, heading_1, code, table, etc.) - Additional fields depending on type: - paragraph: {"text": "content"} - heading_1/2/3: {"text": "heading"} - bulleted_list_item: {"text": "item"} - numbered_list_item: {"text": "item"} - to_do: {"text": "task", "checked": false} - code: {"code": "content", "language": "python"} - quote: {"text": "quote"} - callout: {"text": "content", "emoji": "💡"} - divider: {} (no additional fields) - bookmark: {"url": "https://..."} - image: {"url": "https://..."} - table: {"rows": [["a", "b"], ["c", "d"]], "has_column_header": true} after_block_id: Optional block ID to insert after

Returns: List of created blocks

append_markdownC

Append markdown content to a Notion page.

Converts markdown to Notion blocks and appends them.

Args: page_id: The ID of the page to append to markdown: Markdown content to append

Returns: Number of blocks created

get_pageB

Get a Notion page with its properties and optionally content.

Args: page_id: The ID of the page include_content: Whether to fetch page content blocks (auto-paginates all blocks)

Returns: Page info with properties and optionally content

search_pagesB

Search Notion pages and databases.

Args: query: Search query filter_type: Optional filter - "page" or "database" page_size: Number of results per page (max 100) start_cursor: Cursor for pagination fetch_all: If True, auto-paginate to fetch ALL results. Default True.

Returns: Dict with: - results: List of matching pages/databases - total_count: Number of results - has_more: Whether more results exist (only when fetch_all=False) - next_cursor: Cursor for next page (only when fetch_all=False and has_more=True)

get_blockC

Retrieve a single block by ID.

Args: block_id: The ID of the block

Returns: Block object with type and content

get_block_childrenB

Retrieve children blocks of a block or page.

Args: block_id: The ID of the parent block or page page_size: Number of results per page (max 100) start_cursor: Cursor for pagination fetch_all: If True, auto-paginate all children. Default True.

Returns: Dict with results list and pagination info

update_blockA

Update a block's content or archive it.

Args: block_id: The ID of the block to update fields: Block fields to update. Pass the block type key with its content, e.g. {"paragraph": {"rich_text": [...]}} or {"archived": true} to archive.

Returns: Updated block object

delete_blockB

Delete (archive) a block.

Args: block_id: The ID of the block to delete

Returns: Deleted block object

create_pageA

Create a standalone page (not a database row).

For creating database rows, use create_database_row instead.

Args: parent_type: "page_id" or "workspace" (for top-level pages) parent_id: The ID of the parent page (ignored if workspace) title: Page title properties: Optional additional properties content: Optional markdown content for the page body

Returns: Created page with ID and URL

move_pageC

Move a page to a different parent.

Args: page_id: The ID of the page to move parent_type: "page_id" or "database_id" parent_id: The ID of the new parent

Returns: Moved page info

create_commentB

Create a comment on a page or reply to a discussion thread.

Args: page_id: The ID of the page to comment on text: Comment text content discussion_id: Optional discussion thread ID to reply to

Returns: Created comment object

get_selfA

Get the bot user associated with the current token.

Returns: Bot user object with name, type, and workspace info

get_usersC

List all users in the workspace.

Args: page_size: Number of results per page (max 100) start_cursor: Cursor for pagination

Returns: List of user objects

get_userC

Get a user by ID.

Args: user_id: The ID of the user

Returns: User object

create_databaseB

Create a new database (as a child of a page).

Args: parent_page_id: The ID of the parent page title: Database title properties: Database property schema. Keys are property names, values are property config objects, e.g.: {"Name": {"title": {}}, "Tags": {"multi_select": {"options": []}}}

Returns: Created database with ID and URL

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

B3.4/5.0

Scored across 19 tools

Disambiguation4/5

Most tools are clearly distinct by resource and action. Minor confusion: append_markdown vs. append_blocks both append content to a page, though one accepts markdown and the other raw blocks. get_block vs. get_block_children are distinct but related; descriptions clarify their difference.

Naming Consistency5/5

Consistent verb_noun pattern throughout (e.g., get_database_schema, query_database, create_database_row, update_database_row, append_blocks, etc.). No mixing of conventions or ambiguous names.

Tool Count4/5

19 tools for a comprehensive Notion server is reasonable, covering core operations. Slightly heavy but each tool appears to have a distinct role with minimal redundancy.

Completeness4/5

The surface covers pages, databases, blocks, users, and comments well. Missing explicit delete operations for pages/databases (only blocks can be deleted) and no update for page properties (though update_database_row exists for rows). The get_self and user tools add workspace awareness, but gaps in deletion and page updates are notable.

Maintenance

ActivityInactive
ResponsivenessNo issues