Integrations

MCP

Connect Codex, Cursor, Claude, and other coding assistants to Collabute context.

Use this guide to connect coding agents to Collabute via MCP.

Supported coding agents

Requirements

  • You must belong to an active Collabute organization.
  • Your role must be allowed to use the target integrations.
  • At least one integration should be connected in Settings > Integrations.
  • You need your MCP URL:
  • production: https://api.collabute.ai/api/mcp

Important auth note

Collabute MCP is OAuth-first. Do not configure static PAT headers for MCP clients.

When new scopes are introduced (for example meeting:read), you must re-run OAuth approval so your MCP client receives updated scopes.

Scopes

  • meeting:read: read recent meetings, meeting context, and transcript pages
  • memory:read: read memory retrieval data
  • linear:read: read cached Linear task data
  • slack:read: read indexed Slack thread/message data
  • vercel:read: read connected Vercel project/deployment data
  • write:propose: create pending proposals (no direct third-party write)

Capability catalog (for AI agents)

Use this section as the runtime capability contract for Claude, Codex, Cursor, OpenCode, OpenClaw, and Amp. At runtime, tools/list is the source of truth for what the current token can access.

| Tool | Scope | Use when | Returns | | --- | --- | --- | --- | | system.ping | none | You need a quick connectivity/tenant check | server status, org/user context | | meeting.list_recent | meeting:read | You need deterministic recency discovery for meetings | recent meeting list with transcript/summary flags | | meeting.get | meeting:read | You need actionable meeting context | meeting metadata + summary + memory evidence + cited transcript snippets | | meeting.get_transcript | meeting:read | User explicitly asks for full transcript content | paginated transcript segments (offset, limit) | | memory.search | memory:read | You need org memory retrieval by query | ranked memory items, traces, diagnostics | | memory.get_bundle | memory:read | You need intent-shaped context bundle | structured context + prompt addendum | | linear.search_tasks | linear:read | You need task lookup in connected Linear data | matching tasks list | | linear.get_task | linear:read | You need one exact task by id/key | single task payload | | slack.search_threads | slack:read | You need Slack thread/message evidence | matching messages + thread identifiers | | slack.list_suggestions | slack:read | You need generated Slack suggestions | suggestion list and statuses | | vercel.list_projects | vercel:read | You need project inventory | connected Vercel projects | | vercel.list_deployments | vercel:read | You need deployment status/history | deployment list | | vercel.get_deployment | vercel:read | You need one deployment detail | single deployment metadata | | meeting.propose_task_from_meeting | write:propose | User asks to create a task from meeting evidence | pending proposal only | | memory.propose_write | write:propose | User asks to persist memory updates | pending proposal only | | integration.propose_action | write:propose | User asks for integration-side mutation | pending proposal only |

Tool selection rules (for external agents)

  1. Prefer deterministic retrieval tools before broad search.
  2. For meeting-task requests, use this strict order:

meeting.list_recent -> meeting.get -> meeting.propose_task_from_meeting.

  1. Do not call meeting.get_transcript unless user explicitly requests full transcript.
  2. Use proposal tools for writes; do not assume direct mutation is available.
  3. If a tool is missing in tools/list, the active OAuth token likely lacks that scope.

Prompt-to-tool playbooks

"Fetch my recent meetings and create a task out of it"

  1. Call meeting.list_recent (pick top relevant meeting).
  2. Call meeting.get with a focused query like "action items and owners".
  3. Call meeting.propose_task_from_meeting with sourceSnippetIds from returned snippets.
  4. Tell the user task creation is pending approval (proposal flow).

"Show me the transcript for meeting X"

  1. Call meeting.get_transcript with offset: 0, limit: 200.
  2. If hasMore = true, continue paging with nextOffset.

"What changed in Linear/Slack/Vercel recently?"

  1. Use provider-specific read tool first:

linear.search_tasks, slack.search_threads, or vercel.list_deployments.

  1. Use memory.search only when additional organizational context is needed.

Agent setup

Claude Code logo Claude Code

  1. Add the server:
bash
claude mcp add --transport http collabute https://api.collabute.ai/api/mcp
  1. Start a Claude Code session and run:
text
/mcp
  1. Complete the OAuth approval in browser.
  1. Verify:
bash
claude mcp list

Codex logo Codex

  1. Add the server:
bash
codex mcp add collabute --url https://api.collabute.ai/api/mcp
  1. Open Codex MCP management, then complete OAuth in browser when prompted.
  1. Verify:
bash
codex mcp list

Cursor logo Cursor

  1. Open Cursor MCP settings and add a remote MCP server:
  • name: collabute
  • url: https://api.collabute.ai/api/mcp
  1. Or add URL-based config:
json
{
  "mcpServers": {
    "collabute": {
      "url": "https://api.collabute.ai/api/mcp"
    }
  }
}
  1. Open a chat/tooling session and approve OAuth in browser.

OpenCode logo OpenCode

  1. Add a remote MCP server (interactive):
bash
opencode mcp add

Use:

  • name: collabute
  • type/transport: remote HTTP
  • url: https://api.collabute.ai/api/mcp
  1. When OpenCode asks setup questions, use:
  • Location: Current project (or your preferred scope)
  • Enter MCP server name: collabute
  • Select MCP server type: Remote
  • Enter MCP server URL: https://api.collabute.ai/api/mcp
  • Does this server require OAuth authentication? Yes
  • Do you have a pre-registered client ID? No (recommended)
  1. If your OpenCode build forces a client ID entry, use a stable value like:
text
opencode-collabute-local

Collabute MCP supports OAuth public clients (token_endpoint_auth_method=none).

  1. Complete OAuth when prompted.
  1. If needed, trigger auth manually:
bash
opencode mcp auth collabute
  1. Verify:
bash
opencode mcp list

OpenClaw logo OpenClaw

  1. Add Collabute MCP as a remote HTTP server:
bash
mcporter config add --transport http collabute https://api.collabute.ai/api/mcp
  1. Run OAuth login for the server:
bash
mcporter config login collabute
  1. Verify server and tool discovery:
bash
mcporter list collabute --schema

Do not set a manual Authorization header for Collabute MCP. OpenClaw/mcporter should use the OAuth flow and token cache.

Amp logo Amp

  1. Add the server URL in Amp MCP setup:
bash
amp mcp add collabute https://api.collabute.ai/api/mcp
  1. Complete OAuth in browser when prompted.
  1. Verify:
bash
amp mcp list

If your Amp build does not yet support remote MCP OAuth, update Amp first. Collabute MCP does not accept static PAT-style header setup.

Optional: manual device flow (advanced)

Use this only for clients/environments that cannot open browser auth automatically.

  1. Start:
bash
curl -sX POST https://api.collabute.ai/api/mcp/oauth/device/start \
  -H "content-type: application/json" \
  -d '{"clientName":"Collabute MCP Client"}'
  1. Open verification_uri_complete, sign in, and approve.
  1. Exchange:
bash
curl -sX POST https://api.collabute.ai/api/mcp/oauth/token \
  -H "content-type: application/json" \
  -d '{"grant_type":"urn:ietf:params:oauth:grant-type:device_code","device_code":"<device_code>"}'
  1. Refresh:
bash
curl -sX POST https://api.collabute.ai/api/mcp/oauth/token \
  -H "content-type: application/json" \
  -d '{"grant_type":"refresh_token","refresh_token":"<refresh_token>"}'

Verify installation

  • Confirm collabute is connected in your agent’s MCP list.
  • Ask the agent to list tools from collabute.
  • Run one read tool (for example meeting.list_recent) and confirm org-scoped data is returned.
  • meeting.list_recent
  • meeting.get
  • memory.search
  • linear.search_tasks
  • slack.search_threads
  • vercel.list_deployments

Meeting-first workflow

For prompts like "fetch my recent meetings and create a task out of it", agents should use this sequence:

  1. meeting.list_recent to identify candidate meetings.
  2. meeting.get to gather structured context plus cited snippets.
  3. meeting.propose_task_from_meeting to create a pending Linear proposal.

meeting.get returns hybrid evidence by default:

  • ranked memory evidence
  • cited transcript snippets
  • no full transcript dump

If full transcript is explicitly required, use meeting.get_transcript (paginated with offset and limit).

When to use MCP

Use MCP when the request depends on organization context:

  • Team decisions, meeting memory, and follow-up context.
  • Live task/deployment/communication status.
  • Time-sensitive status questions.

For generic coding questions without org context, MCP can be skipped.

Common issues

Unauthorized or forbidden

  • OAuth approval was not completed.
  • Access token is invalid, expired, or revoked.
  • Your org role is restricted for one or more integration scopes.
  • Your token is missing meeting:read for meeting tools. Re-run OAuth consent to grant the new scope.

Tool returns no data

  • Integration is not connected.
  • Query scope is too narrow or incorrect.
  • No matching recent data exists.

Access denied in provider tools

  • Confirm your org integration policy allows your role.
  • Ask an admin/owner to update integration access settings.

Best practices

  • Start with read-first retrieval before action requests.
  • Use narrow prompts (team/project/channel/time window).
  • Keep one MCP connection per person/account.
  • Revoke access immediately when it is no longer needed.