Skip to main content

Notion

Search a Notion workspace, query its databases, read pages as markdown, and create or update pages, rows, content and comments.

Connect a Notion workspace with an internal integration token to work its pages and databases: search by title, translate a database id into its data sources, read a data source's property schema, query rows with Notion's own filters and sorts, read a page's properties and its content as markdown, and write back - create rows and subpages, set property values, append and edit content blocks, trash and restore pages, and comment. Access is share-scoped: the integration sees only what a person has connected it to in Notion, and an unshared workspace looks like an empty one, so Check Notion connection reports what is actually visible.

Connect

Credential fieldRequiredWhere it comes from
Internal integration token (INTEGRATION_TOKEN)YesFrom the integration's Configuration tab in Notion (ntn_…). Its Capabilities and the pages shared with it are the permission ceiling.

Tools

ToolAccessWhat it does
Check Notion connection (yekar.notion.me)ReadVerify the Notion connection and report what it can actually see: the integration's identity, its workspace, and whether ANY page or database has been shared with it. Run this first when Notion tools return nothing - a Notion integration starts with access to nothing at all, and that state looks exactly like an empty workspace.
Search Notion (yekar.notion.search)ReadFind pages and data sources by TITLE. Notion's search does not look inside page content - a phrase in a document's body will not match - and it only ever returns what has been shared with this integration. Use it to locate an id, then read the page or query the data source.
Get database (yekar.notion.get-database)ReadRead a database and list its DATA SOURCES. This is the id-translation step: a Notion URL gives you a database id, but rows are queried, created and filtered against a data source id, which is what this returns. Start here whenever you have an id copied from Notion.
Get data source (yekar.notion.get-data-source)ReadRead a data source's property schema: every property's name, type and (for select, status and multi-select) its allowed options. This is the discovery step before querying with property filters or writing a row - property names and options are per-workspace and cannot be guessed.
Query data source (yekar.notion.query-data-source)ReadList a data source's rows (each row is a Notion page), optionally filtered and sorted by its properties. Returns one page of rows plus a cursor - Notion reports no total count for any list, so this cannot tell you how many rows match. Get the property names, types and options from Get data source first.
Get page (yekar.notion.get-page)ReadRead a page's PROPERTIES - its title, and for a database row every column value. This does not return the page's content: the text, headings and lists written on the page are blocks, and Get page content reads those.
Get page content (yekar.notion.get-page-content)ReadRead a page's written content - its text, headings, lists, to-dos, quotes, callouts and code - as markdown. This is what is ON the page, as opposed to Get page, which reads its properties. Long or deeply nested pages are read up to a budget and the response says exactly where it stopped and how to continue.
List blocks (yekar.notion.get-block-children)ReadList a page's or block's direct children with their block ids, types and a short text preview - one level deep, no recursion. Use this when you need a specific block's ID in order to edit or delete it; to READ a page, use Get page content, which renders the whole tree as markdown.
List comments (yekar.notion.list-comments)ReadRead the comments on a page or block. Comments in the same thread share a discussion id - pass that id to Add comment to reply in the thread rather than starting a new one. Requires the integration's read-comments capability.
List users (yekar.notion.list-users)ReadList the workspace's members and bots with their user ids - the ids a person-typed property needs when you set an assignee or owner. Requires the integration's read-user-information capability.
Create page (yekar.notion.create-page)WriteCreate a Notion page - either a ROW in a data source (with its property values) or a SUBPAGE under an existing page - optionally with initial content. Creating is not idempotent: calling this twice makes two pages, so check with Query data source before retrying.
Update page properties (yekar.notion.update-page-properties)WriteSet property values on an existing page (a database row). Only the properties you name change; the rest and the page's content are untouched. Values are absolute, so running the same update twice leaves the same result.
Append blocks (yekar.notion.append-blocks)WriteAdd content to the end of a page (or inside a block): paragraphs, headings, bulleted and numbered list items, to-dos, toggles, quotes, callouts, code blocks and dividers. Text is written verbatim - inline markdown is not parsed. Appending accumulates: running the same call twice writes the content twice.
Update block (yekar.notion.update-block)WriteReplace one block's text with new text, keeping its type and position. The value is absolute, so repeating the call leaves the same result. A block's type cannot be changed - delete it and append a new one instead.
Delete block (yekar.notion.delete-block)WriteMove a block to the trash, removing it (and anything nested inside it) from the page. Notion's delete is a trash move, not an erase - a person can restore it from the page's history. Deleting an already-deleted block is an error, so this is not safe to repeat blindly.
Trash or restore page (yekar.notion.archive-page)WriteMove a page to the trash, or restore one from it. Trashing hides the page from the workspace and from database views without erasing it - a person can restore it in Notion, and this tool can too. The state is absolute, so repeating the call is harmless.
Add comment (yekar.notion.create-comment)WriteComment on a page, or reply in an existing comment thread. The comment is posted by the integration, not by a person, and everyone with access to the page can see it. Comments accumulate - posting the same text twice leaves two comments.

Notes

  • In Notion open Settings → Connections → "Develop or manage integrations" → New integration, pick the workspace, name it (e.g. "Yekar.AI") and copy the Internal Integration Secret (ntn_…).
  • On the integration's Capabilities tab tick what Yekar.AI may do - read content, update content, insert content, read and insert comments, read user information. That selection is the ceiling for every tool, and a missing capability surfaces as a refusal naming it.
  • Then SHARE with it: open each page or database in Notion → ⋯ → Connections → add the integration. This is the step everyone misses. Anything you do not share is invisible - searches return nothing and its id reports as not found, with no error to tell you why. Sharing a parent page shares everything under it.
  • Actions are attributed to the integration, not to you: pages it creates and comments it posts show the integration as their author, and it acts with exactly what you shared, not with your own Notion permissions.
  • Paste the token here. Add one credential per workspace - a production and a test workspace can live on the same connection.