Open app →
Documentation

The Company-Brain MCP

Connect Claude Code, Claude Desktop, or any MCP client to securely act on everything in CompanyOS — tasks, projects, meetings, notes, calendar, comments, teams, the org, activity, the brain, and AI agents — with OAuth 2.1, per-org or all-organization tokens, granular scopes, a Root/Admin switch, and full member parity across 130+ tools.

What the Company-Brain MCP is

The Company-Brain MCP is a first-party Model Context Protocol server built directly into the CompanyOS API. Connect an MCP client — Claude Code, Claude Desktop, or anything that speaks MCP — and it can read and write everything you can reach in CompanyOS: projects, tasks, boards, comments, notifications, meetings, notes, calendar, teams, the org and its members, activity, the knowledge brain, and the AI agents. Every tool call is scoped to one organization and runs with your permissions, so an agent can do exactly what you can do in the web app — nothing more.

Endpoint
https://api.company.chele.bi/api/v1/mcp — a single streamable-HTTP MCP endpoint. Authentication is OAuth 2.1; there is nothing to copy-paste, the client walks you through a browser consent the first time.

How access works

The MCP uses standard OAuth 2.1 so you never hand a client a raw API key. The first time a client connects it discovers the authorization server, registers itself, and opens a CompanyOS consent screen in your browser. You pick a workspace and approve a set of permissions; the client receives a token scoped to that org and those permissions.

  • OAuth 2.1 + Dynamic Client Registration (RFC 7591) — clients self-register, no manual app setup.
  • PKCE (S256) on the authorization code flow — safe for public/native clients.
  • RFC 9728 protected-resource metadata — clients auto-discover the auth server from the MCP endpoint.
  • Per-organization or all-organization tokens — mint a token for one workspace, or choose *All my organizations* to receive a single cross-org token that works in every workspace you belong to.
  • `org_id` targeting — with an all-organization token, every tool accepts an optional org_id so the agent chooses which workspace a call lands in; a single-org token infers it automatically.
  • Granular scopes — you approve exactly which domains the agent may read and write.

When a client connects you land on the CompanyOS authorization page. Choose a single workspace, or pick All my organizations to authorize every workspace you belong to at once with one cross-org token, then tick the permissions. Read permissions for the core domains are pre-checked as a sensible baseline; write and elevated permissions are an explicit, deliberate opt-in. Approve to connect, or decline to cancel — either way you are returned to the client.

Root / Admin — full access

One switch for trusted agents
At the top of the consent screen is a Root / Admin toggle. Turn it on and every permission is selected and locked, granting the agent the complete tool surface on your behalf. Use it when you want an agent to act as a full operator of your workspace; leave it off and hand-pick scopes when you want to keep the agent narrow.

Install

Claude Code

Add the server, then run /mcp and complete the browser consent:

bash
claude mcp add --transport http companyos https://api.company.chele.bi/api/v1/mcp

# then, inside Claude Code:
/mcp        # opens the CompanyOS consent screen in your browser

Claude Desktop and other clients

Point any MCP client at the endpoint. Clients that don't yet speak OAuth-protected HTTP natively can bridge through mcp-remote:

json
{
  "mcpServers": {
    "companyos": {
      "command": "npx",
      "args": ["-y", "mcp-remote", "https://api.company.chele.bi/api/v1/mcp"]
    }
  }
}
First connection
The first call triggers the OAuth flow and opens the consent screen in your browser. After you approve, the client stores the per-org token and reconnects automatically.

Permissions (scopes)

Scopes are grouped by domain, with a read tier, a write tier, and a few elevated tiers for sensitive admin actions. Approving a domain's read scope lets the agent see that data; the write scope lets it create, edit, and delete. Root/Admin grants all of them at once.

DomainScopesCovers
Taskstasks:read, tasks:writeTasks, boards, sub-tasks, relations, labels, triage, and projects
Notesnotes:read, notes:writeNotes and documents
Meetingsmeetings:read, meetings:writeMeetings, transcripts, summaries, share links, templates and recipes
Calendarevents:read, events:writeCalendar events and briefs
Commentscomments:read, comments:writeComments on tasks, notes and meetings
Notificationsnotifications:read, notifications:writeYour notifications, read/archive/snooze
Teamsteams:read, teams:writeTeams and their members
Organizationorg:read, org:manage, org:create (elevated)Org details, members, roles, invites, and creating new organizations
All organizationsorgs:all (elevated)Granted by the All my organizations consent option — one token that acts across every workspace you belong to
Viewsviews:read, views:writeSaved board views
Vocabularyvocabulary:read, vocabulary:writeThe org glossary
Workflowworkflow:read, workflow:writeCustom workflow statuses
Automationautomation:read, automation:writeAutomation rules and skills
Activityactivity:readThe activity feed and per-entity history
Brainbrain:readCatch-me-up, open threads and resume points
AI agentsagents:read, agents:write, agents:keys (elevated)AI users, runs, budgets, and provider API keys
Integrationsintegrations:read, integrations:manage (elevated)Slack connection and posting
Connected sourcessources:read, sources:write, sources:manage (elevated)GitHub commits and pull requests linked to tasks
Profileprofile:read, profile:writeYour own user profile

What the agent can do (tool catalog)

The MCP exposes the full member surface — every action a person can take in the web app, an agent can take through a tool. Tools are grouped below by domain. Creates accept an optional idempotency_key so a retried call never duplicates work, and destructive deletes take a confirm flag (call once to preview, again with confirm=true to apply).

Targeting an organization
Every tool accepts an optional org_id. With a single-organization token you can omit it — the call uses the token's workspace. With an All my organizations token, pass org_id to choose which workspace a call acts on.
Linking to tasks and notes
Embed a clickable reference to a task or note in any description or comment using a Markdown link of the form [label](/__mention/kind/id). See the References & Mentions page for the full format and examples.

Tasks and boards

ToolWhat it does
list_project_tasksList a project's tasks with board-style filters
get_taskFetch one task with its identifier, counts and blocked state
create_taskCreate a task (supports sub-tasks, bug kind, severity, mentions, relations)
update_taskEdit title, description, priority, assignee, due date, labels, kind, severity
transition_task_statusMove a task to a new workflow status
delete_taskDelete a task (confirm-gated)
create_tasks_batchCreate several tasks at once from a list of titles
get_task_boardRead the board grouped into status columns
list_my_tasksYour assigned / created / subscribed / recent tasks
list_subtasksList a task's sub-tasks
subscribe_task, unsubscribe_taskFollow or unfollow a task
list_task_relationsList blocking / blocked-by / related links
add_task_relation, remove_task_relationLink or unlink two tasks

Labels (tags)

ToolWhat it does
list_labelsList the org's task labels
create_labelCreate a label (get-or-create, safe to retry)
attach_task_labels, detach_task_labelsAdd or remove labels on a task
delete_labelDelete a label org-wide (confirm-gated)

Triage

ToolWhat it does
list_triageIncoming items awaiting routing
accept_triage_task, decline_triage_taskAccept or decline a triage item

Projects

ToolWhat it does
list_projects, get_project, create_projectBrowse and create projects
update_projectEdit name, description, status, team, lead, target date
delete_project, restore_project, list_deleted_projectsArchive, restore, and review deleted projects (delete confirm-gated)
subscribe_project, unsubscribe_project, get_project_subscriptionFollow a project and check subscription
list_project_members, add_project_member, remove_project_memberManage who is on a project
list_project_artifacts, add_project_artifact, remove_project_artifactAttach and remove links/artifacts

Comments

ToolWhat it does
list_comments, get_commentRead comments on a task, note or meeting
create_comment, update_comment, delete_commentPost, edit and remove comments (delete confirm-gated)

Notifications

ToolWhat it does
list_notifications, unread_countYour notifications and unread total
mark_notification_read, mark_all_notifications_readMark one or all read
archive_notification, snooze_notificationArchive or snooze a notification

Teams

ToolWhat it does
list_teams, get_team, create_team, update_team, delete_teamManage teams (delete confirm-gated)
list_team_members, add_team_member, remove_team_memberManage team membership

Organization, members and invites

ToolWhat it does
list_my_orgsList every organization you belong to (works with an all-organization token)
get_org, update_orgRead and edit the workspace
create_orgCreate a new organization — you become its owner
delete_orgDelete an organization you own (confirm-gated)
list_org_members, update_member_role, remove_org_memberManage members and roles (remove confirm-gated)
list_invites, create_invite, revoke_inviteInvite people and revoke invitations

Meetings

ToolWhat it does
list_meetings, get_meeting, create_meetingBrowse and create meetings
import_folio_meetingImport a meeting from Folio
update_meeting, delete_meetingEdit or delete a meeting (delete confirm-gated)
list_meeting_segments, list_meeting_chapters, list_meeting_summariesRead transcript segments, chapters and summaries
summarize_meetingGenerate a summary
suggest_meeting_projectSuggest the project a meeting belongs to
ask_meeting, meetings_chatQ&A on one meeting, or across all meetings
run_meeting_recipeRun a saved meeting recipe
get_meeting_share, create_meeting_share, update_meeting_shareManage public share links

Meeting templates and recipes

ToolWhat it does
list_meeting_templates, create_meeting_template, update_meeting_template, delete_meeting_templateManage meeting templates (delete confirm-gated)
list_meeting_recipes, create_meeting_recipeBrowse and create recipes

Notes

ToolWhat it does
list_notes, get_noteBrowse and read notes
create_note, update_note, delete_noteWrite, edit and delete notes (delete confirm-gated)

Calendar

ToolWhat it does
list_calendar_events, get_calendar_eventBrowse and read events
create_calendar_event, update_calendar_event, delete_calendar_eventManage events (delete confirm-gated)
get_event_briefGet the AI brief for an event

Activity

ToolWhat it does
list_activityThe org-wide activity feed, newest first
get_entity_activityThe change history of one task, note or meeting

Company brain

ToolWhat it does
brain_open_threadsOpen loops that still need attention
brain_changes_sinceWhat changed since a point in time (catch-me-up)
brain_resumeWhere you left off, to resume work

AI agents and keys

ToolWhat it does
list_ai_users, get_ai_user, create_ai_user, update_ai_userManage the org's AI agents
pause_ai_user, set_ai_user_budget, delete_ai_userPause, budget and remove agents
list_agent_runsRecent agent runs
list_ai_keys, create_ai_key, update_ai_key, revoke_ai_keyManage provider API keys (elevated agents:keys; revoke confirm-gated)

Views, vocabulary and workflow

ToolWhat it does
list_views, create_view, update_view, delete_viewSaved board views (delete confirm-gated)
list_vocabulary, create_term, update_term, delete_termOrg glossary (delete confirm-gated)
list_workflow_statuses, create_workflow_status, update_workflow_status, delete_workflow_statusCustom statuses (delete confirm-gated)

Automation

ToolWhat it does
list_automations, create_automation, update_automation, delete_automationManage automation rules (delete confirm-gated)
run_automationRun a skill rule against a task

Integrations and profile

ToolWhat it does
get_slack_integration, list_slack_channelsRead the Slack connection and channels
post_meeting_to_slackPost a meeting to a Slack channel (elevated integrations:manage)
get_my_profile, update_my_profileRead and update your own profile

Safety and conventions

  • Org-scoped — every token is pinned to one organization; tools only ever touch that workspace.
  • Scope-checked per call — a tool runs only if your token carries its scope, otherwise it returns insufficient_scope.
  • Idempotent creates — pass an idempotency_key and a retried create returns the original result instead of duplicating.
  • Confirm-gated deletes — destructive tools preview first and only act when called again with confirm=true.
  • Mirrors the app — every action is exactly what a member can do in the UI, and shows up in activity the same way.
New permissions need a fresh consent
If you connected before a new tool domain shipped, your existing token won't carry the new scopes. Re-run the client's connect flow (/mcp in Claude Code) and approve again — ticking Root/Admin grants the entire current surface in one step.