agenthub · notion.read
Read from Notion at a fixed point in the graph — fetch a page, search the workspace, or query a database. A typed data node, not a tool.
Why the node earns its place
A tool hands the model a schema and lets it decide when to call. This is the deterministic counterpart: it reads at a fixed point and emits structured data for downstream nodes to consume.
Credentials never travel on a canvas edge. The node points at a connection by naming it, and the gateway resolves that connection per caller — keyless while you build, the buyer's own Notion at runtime. The same node, keyed per instance.
How it works at run time
fetch by id or URL, search across the workspace, query_database as read-only SQL, or query_view to run a view's own filters.What you wire
Configuration
| Key | Type | Default & options | What it does |
|---|---|---|---|
| connection * | string | default "notion" | The connection to read through (auth_layer tool_id). Resolved per-caller at run time — keyless in Workbench, the buyer's own Notion in MyCrew. Never a secret. |
| operation * | string | default "fetch" fetch · search · query_database · query_view | fetch: one page/database/data-source by id or URL. search: semantic search across the workspace. query_database: read-only SQL over a data source (Free plan: hourly rate limit). query_view: run a database view's own filters — non-SQL, Free-plan friendly, not rate-limited. Prefer query_view for row lookups on Free. |
| id | string | — | fetch: page / database / data-source id or URL. Accepts a notion.so or *.notion.site URL, a raw UUID, or a collection:// data-source URL. Overridable via the `id` input. |
| include_discussions | boolean | default false | fetch: include comment/discussion markers in the page. |
| query | string | — | search: the semantic query over the workspace. Overridable via the `query` input. |
| teamspace_id | string | — | search: restrict results to one teamspace (optional). |
| page_size | number | default 10 | search: max results to return (1–25). |
| view_url | string | — | query_view: the ?v= URL of a database view. The view's own filters/sorts are applied — use an all-rows view to list everything. Overridable via the `id` input. |
| start_cursor | string | — | query_view: pagination cursor (the next_cursor from a prior page). Leave blank for the first page. |
| data_source_url | string | — | query_database: the collection:// data-source URL. Get it by running a fetch on the database first (from its <data-source url=…> tag). |
| sql | string | — | query_database: read-only SQLite over the data source, e.g. SELECT * FROM "collection://…" LIMIT 10. Requires a Notion Business plan with Notion AI. |
| mcp_tool_name | string | — | Advanced: override the Notion MCP tool name for the chosen operation. Leave blank unless a Notion MCP revision has renamed the tool. |
What usually goes wrong
Watch for this
Prefer query_view over query_database unless you need SQL. SQL requires a Notion Business plan with Notion AI, while a view runs the filters already saved in Notion, is not rate-limited, and works on the free plan.
With no connection the gateway returns a typed not-connected result, surfaced as ok: false — not a crash. Check ok before using data.
Behaviour & provenance