What it gives Plexward
- Tracker items. Open tasks for a given assignee in a given folder become the entity's open items on the board, with status and priority.
- Meeting action items. The meeting-sync skills extract action items from a transcript and push them straight into the entity's list, so the loop between "we agreed" and "it is tracked" closes in one step.
- Digests. Weekly digests count what moved, what is overdue, and what has been sitting untouched.
- Comments. A skill can post a comment back onto the task it acted on, which is usually more useful than a new task.
Layer
account. One ClickUp connector is attached to your Claude account and every brain on the machine can see it. There is no per-entity ClickUp setting, and looking for one is a waste of an afternoon.
Declare it as:
{ "name": "ClickUp", "layer": "claude.ai", "svc": "Tasks", "account": "Acme workspace" }
Prerequisites
- A ClickUp account with access to the workspace.
- The connector attached on claude.ai (Settings, Connectors, ClickUp) and authorized against that workspace.
- The folder or list ids for each entity, and the member id of whoever the board should be filtered to. Both are discoverable from the connector itself; you do not need to dig through URLs.
Setup steps
1. Attach the connector. On claude.ai, add the ClickUp connector and complete the OAuth consent. This is a browser step and it is yours, not the agent's. Nothing is written to disk on your machine.
2. Confirm the session sees it.
cd ~/brains/acme-brain && claude mcp list | grep -i clickup
Expected: claude.ai ClickUp: ... - ✔ Connected.
3. Find the ids you will pin. From a session in the entity's brain, ask for the workspace hierarchy and the member list, and record the folder id for the entity's work and your own member id. Put them in the entity's brain, not in this repo:
<!-- ~/brains/acme-brain/integrations/integration-patterns.md -->
## ClickUp
- Workspace: Acme
- Folder id for tracked work: <folder-id>
- Board is filtered to member id: <member-id>
- Statuses that count as closed: `complete`, `closed`
4. Declare it in catalog/declarations.json under the entity slug, with the workspace name in the account field so the dashboard can show which workspace this row means.
Per-entity routing
This is the whole ballgame for an account-layer connector. Two entities can be two folders in one ClickUp workspace, or two entirely separate workspaces, and the agent cannot tell the difference from the tool list alone.
In <brain>/integrations/mcp-routing.md:
## Owned Integrations
| MCP Tool | Service | Account / Workspace | Notes |
|---|---|---|---|
| ClickUp | Tasks | Acme workspace | Account layer. **Only** folder `<folder-id>`. |
## NOT This Company
- ClickUp folders belonging to any other entity. Every ClickUp query from this
brain must carry this entity's folder id as a filter.
- Notion, Slack, HubSpot (owned by other entities).
The rule that makes this work: every ClickUp call from an entity's brain carries that entity's folder or list id as an explicit filter. An unfiltered search returns the whole workspace, and an agent will summarize it without noticing that half of it belongs to someone else.
If two entities are in genuinely separate ClickUp workspaces and you need hard isolation rather than a doctrine, the account layer cannot give it to you. The options are a dedicated Claude account per entity, or moving that entity's tracker to GitHub issues.
Verify
cd ~/brains/acme-brain && claude mcp list | grep -i clickup
bin/mc-connectors --company acme --dry-run | grep -i clickup
Expected: ✔ Connected from the first, and a row with status active from the second. Then a real read: ask a session in the brain for the open tasks in the entity's folder and confirm the count matches what ClickUp shows in a browser.
Common failures
- The connector reports
Needs authenticationand nobody notices. OAuth grants expire. Before the probe existed, three account-layer connectors had been dead for an unknown length of time and the dashboard cheerfully showed the last hand-typed inventory. Re-consent on claude.ai and re-probe. - A query without a folder filter returns another entity's tasks. No error, no warning, just a wrong brief. Filter every call.
- Status strings are workspace-specific. Closed might be
complete,closed,done, or a custom Spanish or French label. Hardcodingcompletesilently keeps finished work on the board. Record the real closed statuses in the brain. - Assignee filters need member ids, not names. Names are ambiguous across a workspace; resolve the member id once and pin it.
- Priority is not status. A task can be urgent and closed. Sort by priority after filtering out the closed statuses, not before.
What Plexward does with it once connected
The items refresh filters tasks by folder and assignee, drops the closed statuses, keeps roughly the top six or seven by priority, and writes them to the board with https://app.clickup.com/t/<task-id> links. Urgent and high map to high priority; everything else is medium.
The meeting-sync skill, after writing a transcript note into the brain, extracts action items and creates them as tasks in the entity's list, behind a confirmation gate. It never writes to a tracker without one.
Weekly digests and document-freshness audits read the same folder to flag overdue work and tasks that have not moved.