plexward

CONNECTORS / NOTION

Notion

The tracker and the written record for entities that live in Notion. Like ClickUp it is an account-layer connector, so the same isolation doctrine applies, but Notion adds a wrinkle: it is also where meeting notes, weekly pages and long-form knowledge live, so the agent reads far more of it than it writes.

Tracker items, weekly pages, meeting notes, knowledge index.

What it gives Plexward

  • Tracker items. Pages in a projects database, filtered to a responsible person and a set of non-done statuses, become the entity's open items.
  • Weekly structure. A weekly-setup skill creates the week's page and one sub-page per meeting from the calendar, seeded with carry-over items.
  • Meeting notes. Transcript summaries and action items land in the right meeting sub-page instead of a separate system nobody reads.
  • Knowledge index. Brain documents and Notion pages are indexed together, so a search finds the decision wherever it was written down.
  • Drafted updates. A weekly update page is drafted from the week's notes and staged for review before anything is published.

Layer

account. One Notion connector per Claude account, visible from every brain. No per-entity setting exists.

Declare it as:

{ "name": "Notion", "layer": "claude.ai", "svc": "Docs · Projects", "account": "Acme workspace" }

Prerequisites

  • A Notion account with access to the workspace.
  • The connector attached on claude.ai and authorized. Note that Notion's OAuth grants access to selected pages and databases, not the whole workspace: what you tick during the consent flow is what the agent can see forever after.
  • The database id or page URL for the entity's projects database, and for the parent page where recurring weekly pages live.

Setup steps

1. Attach the connector on claude.ai and complete the consent. During the page picker, grant the entity's top-level space, not individual pages: granting page by page means every new page is invisible until you re-consent.

2. Confirm the session sees it.

cd ~/brains/acme-brain && claude mcp list | grep -i notion

Expected: claude.ai Notion: ... - ✔ Connected.

3. Pin the anchors in the brain. Notion ids are long and unguessable, and searching for a page by title every run is slow and occasionally wrong. Record them once:

<!-- ~/brains/acme-brain/integrations/integration-patterns.md -->
## Notion
- Projects DB: https://www.notion.so/acme/Projects-<id>
- Recurring (weekly pages) parent: https://www.notion.so/acme/Recurring-<id>
- Open statuses: To Do, Next Up, In Progress, For Review
- Responsible property: `Responsible`, filtered to <your name>

4. Declare it in catalog/declarations.json with the workspace in the account field.

Per-entity routing

## Owned Integrations
| MCP Tool | Service | Account / Workspace | Notes |
|---|---|---|---|
| Notion | Docs, Projects | Acme workspace | Account layer. Projects DB `<id>` only. |

## NOT This Company
- Notion databases and pages outside the Acme space.
- ClickUp (another entity's tracker), Slack, HubSpot.

Two rules:

  • Anchor every read to a pinned id. A bare notion-search spans everything the grant covers, which may include another entity or your personal pages.
  • Private stays private. If an entity keeps meeting notes in a private recurring space, say so in the routing doc and say that nothing from it may be written into a shared database. This has to be written down, because the agent cannot infer sensitivity from the page tree.

Verify

cd ~/brains/acme-brain && claude mcp list | grep -i notion
bin/mc-connectors --company acme --dry-run | grep -i notion

Then a real read: fetch the pinned projects database from a session and confirm the page count and the statuses match what the browser shows.

Common failures

  • The page exists and the agent cannot see it. Almost always the OAuth grant, not a bug. A page created outside the granted subtree, or moved out of it, disappears. Re-consent and include the parent.
  • Status property names drift. A workspace that renames Status to Stage breaks every filter at once, silently returning zero rows. Zero results from a database you know has rows means a property name changed.
  • Title matching is fragile. Matching a meeting recording to a Notion sub-page by title keywords works until someone renames a meeting. Prefer matching by date plus a keyword, and log the ones that did not match rather than guessing.
  • Rate limits during a bulk sync. Writing thirty sub-pages in a loop will hit them. Batch, and tolerate a retry.
  • Rich-text writes are not idempotent. Re-running a sync that appends notes appends them twice. Write into a named section and replace its contents, or check for an existing block first.

What Plexward does with it once connected

The items refresh queries the projects database for pages where the responsible property is you and the status is not done, keeps roughly six, and writes them to the board with the page URL.

The weekly-setup skill reads the calendar, creates the week's page and its meeting sub-pages, and seeds each agenda with carry-over items from last week. The meeting-sync skills write summaries and action items into those sub-pages. The weekly update skill drafts a recap page and a matching chat post, both staged for review, never published automatically.

The knowledge index treats Notion pages as first-class artifacts alongside brain markdown, and the enrichment pass adds summaries, topics and cross-links so that a later search finds them.

Every connector, one convention.

Plexward keeps the bookkeeping: which entity is supposed to have which connector, whether it is actually working right now, and what an agent is allowed to do with it.