# Pivot

```json
{
  "name": "Pivot",
  "slug": "pivot",
  "url": "https://composio.dev/toolkits/pivot",
  "markdown_url": "https://composio.dev/toolkits/pivot.md",
  "logo_url": "https://logos.composio.dev/api/pivot",
  "categories": [
    "collaboration & communication",
    "productivity & project management"
  ],
  "is_composio_managed": false,
  "updated_at": "2026-10-19T05:35:02.717Z"
}
```

![Pivot logo](https://logos.composio.dev/api/pivot)

## Description

Securely connect your AI agents and chatbots (Claude, ChatGPT, Cursor, etc) with Pivot MCP or direct API to manage spaces, create rooms, post messages, track goals, and organize members through natural language.

## Summary

Pivot is a team collaboration platform for organizations, spaces, rooms, messages, goals, and shared work.
It keeps team communication and goals organized in one connected workspace.

## Categories

- collaboration & communication
- productivity & project management

## Toolkit Details

- Tools: 71

## Images

- Logo: https://logos.composio.dev/api/pivot

## Authentication

- **Api Key**
  - Type: `api_key`
  - Description: Api Key authentication for Pivot.
  - Setup:
    - Configure Api Key credentials for Pivot.
    - Use the credentials when creating an auth config in Composio.

## Suggested Prompts

- Create a Pivot room for launch planning
- List messages in the product room
- Track quarterly goals across Pivot spaces

## Supported Tools

| Tool slug | Name | Description |
|---|---|---|
| `PIVOT_ADD_BLOCK_RESPONSE_ATTACHMENT` | Add Block Response Attachment | Attach an existing Pivot file to a block response. |
| `PIVOT_ADD_GROUP_MEMBERS` | Add Group Members | Add one or more existing Pivot users to a group. |
| `PIVOT_ADD_GROUP_TO_SPACE` | Add Group To Space | Grant an existing Pivot group access to a space with specified space roles. |
| `PIVOT_ADD_ROOM_MEMBERS` | Add Room Members | Add one or more existing Pivot users to a room with a shared role. The Pivot API exposes no undo path for this membership change. |
| `PIVOT_ADD_SPACE_LABELS` | Add Space Labels | Add one or more labels to a Pivot space without removing labels already assigned to it. |
| `PIVOT_ADD_SPACE_MEMBERS` | Add Space Members | Add one or more existing Pivot users to a space, optionally assigning space roles and member titles. |
| `PIVOT_COPY_SPACE` | Copy Space | Start an asynchronous copy of a Pivot space. A successful response only means the copy was accepted. Poll the space operation-status endpoint with the same source space_id and returned operation_id until status is succeeded or failed; on success, new_space_id identifies the copy. |
| `PIVOT_CREATE_BLOCK_RESPONSE` | Create Block Response | Create a Pivot block response from plain text, or use advanced rich content for formatting; optionally create it as a reply. |
| `PIVOT_CREATE_BLOCK_SHARING_RULE` | Create Block Sharing Rule | Create a sharing rule that grants a subject access to a Pivot block. |
| `PIVOT_CREATE_LABEL` | Create Label | Create a label in a Pivot organization. Pivot's label delete endpoint was observed returning an error without removing the label, so create only labels that may safely remain in the organization. |
| `PIVOT_CREATE_ROOM` | Create Room | Create a Pivot chat, direct, post, audio, video, or streaming room. Pivot does not document a room-delete endpoint, so this creation cannot be safely reversed; create only rooms that may remain in the workspace. |
| `PIVOT_CREATE_SPACE` | Create Space | Create a blank Pivot space or organization template synchronously, or create an independent space from a template. A template-based request returns the new space immediately and may include operation_id while content is copied asynchronously; poll the space operation-status endpoint until succeeded or failed. To duplicate an ordinary space, use Pivot's copy-space action instead. |
| `PIVOT_CREATE_SPACE_ROLE` | Create Space Role | Create a custom role in a Pivot space with an explicit set of permissions. Pivot does not document an endpoint for deleting space roles, so create only roles that may safely remain in the space. |
| `PIVOT_CREATE_SUBGOAL` | Create Subgoal | Create a goal directly under an existing Pivot goal. Requires edit access to the parent and uses request_id as an idempotency key scoped to the caller and parent. |
| `PIVOT_CREATE_WEBHOOK` | Create Webhook | Create a Pivot webhook for an organization and return its one-time signing secret. Store the secret securely because it is not returned by later reads. |
| `PIVOT_DELETE_BLOCK_RESPONSE` | Delete Block Response | Delete a response from a Pivot block by its response UUID. |
| `PIVOT_DELETE_BLOCK_RESPONSE_ATTACHMENT` | Delete Block Response Attachment | Delete a file attached to a block response by attachment UUID. |
| `PIVOT_DELETE_BLOCK_SHARING_RULE` | Delete Block Sharing Rule | Delete a sharing rule from a Pivot block by sharing-rule UUID. |
| `PIVOT_DELETE_LABEL` | Delete Label | Permanently delete a Pivot label by its label UUID. Pivot returned HTTP 500 without deleting the build account's test label, so treat a provider error as no deletion and verify the label is absent after success. |
| `PIVOT_DELETE_ROOM_MESSAGE` | Delete Room Message | Delete a sent Pivot room message. Provide sent_at for a non-thread message or thread_root_message_id for a message in a thread. |
| `PIVOT_DELETE_SPACE` | Delete Space | Permanently delete a Pivot space or template using its ordinary space lifecycle. |
| `PIVOT_DELETE_USER` | Delete User | Permanently delete a Pivot user account, not merely remove a space membership. Pivot allows this only when the user's email is verified by the specified organization and by no other organization. This cannot be undone and deletes the user across all organizations. |
| `PIVOT_DELETE_USER_OR_REMOVE_MEMBERSHIP` | Delete User or Remove Membership | Delete a Pivot user globally when the specified organization verified that user. Otherwise, remove the user's memberships only from the specified organization. This is destructive: the same call can permanently delete the user across Pivot, and user_deleted reports which outcome occurred. |
| `PIVOT_DELETE_WEBHOOK` | Delete Webhook | Permanently delete a Pivot webhook by its webhook UUID. |
| `PIVOT_GET_BLOCK` | Get Block | Return a block by ID, optionally including all visible descendant blocks. |
| `PIVOT_GET_ROOM` | Get Room | Return a Pivot room by its ID. |
| `PIVOT_GET_ROOM_MESSAGE` | Get Room Message | Retrieve one Pivot room message by its ID and send timestamp. Thread replies also require both thread locator IDs, and recording comments require the parent recording ID. |
| `PIVOT_GET_ROOM_RECORDING` | Get Room Recording | Return a specific Pivot room recording by ID, including transcript, chapter, summary, and caption assets. |
| `PIVOT_GET_SPACE` | Get Space | Return a Pivot space by ID with its settings, roles, member summaries, and labels. Response-only access tokens are removed. The direct endpoint's member_count can be 0 even when members exist; use list spaces or list space members when an authoritative count is required. |
| `PIVOT_GET_SPACE_OPERATION` | Get Space Operation | Get the status of an asynchronous Pivot space copy or template application. Poll until status is succeeded or failed. For Copy Space, pass the source space_id used in the copy request; for Create Space from a template, pass the new space.id returned by Create Space. |
| `PIVOT_GET_USER_CONTEXT` | Get User Context | Return a Pivot user's profile, space memberships, and groups within an organization. The response excludes the provider's presence token. |
| `PIVOT_HIDE_SPACE` | Hide Space | Hide an existing Pivot space from view. The Pivot API exposes no undo path for hiding a space. |
| `PIVOT_INVITE_TO_ROOM` | Invite To Room | Invite people to a Pivot room by email. A successful call creates room invitations and sends externally visible invitation emails to every address. |
| `PIVOT_INVITE_TO_SPACE` | Invite To Space | Invite people to a Pivot space by email. A successful call sends externally visible invitation emails to new users and adds existing Pivot users directly to the space with the specified roles and groups. |
| `PIVOT_LIST_BLOCK_RESPONSES` | List Block Responses | Return the responses attached to a Pivot block. |
| `PIVOT_LIST_BLOCK_SHARING_RULES` | List Block Sharing Rules | Return the sharing rules configured for a Pivot block. |
| `PIVOT_LIST_GROUP_MEMBERS` | List Group Members | Return the users in a specified Pivot group. |
| `PIVOT_LIST_GROUPS` | List Groups | Return one page of groups in a Pivot organization. |
| `PIVOT_LIST_LABELS` | List Labels | Return the labels configured in a Pivot organization. |
| `PIVOT_LIST_ORGANIZATION_USERS` | List Organization Users | Return one page of users in a Pivot organization. Pass next_cursor from the preceding response unchanged to continue listing users. |
| `PIVOT_LIST_ROOM_MESSAGES` | List Room Messages | Return one page of room messages, newest first. On the first call, provide the room ID and its created_at timestamp from Get Room. To continue through the current and older history windows, call again with only next_cursor; pagination stops automatically at the room's creation boundary. |
| `PIVOT_LIST_ROOM_RECORDINGS` | List Room Recordings | Return one page of recordings for a Pivot room, including transcripts and other recording assets. |
| `PIVOT_LIST_SPACE_ASSIGNMENT_BLOCKS` | List Space Assignment Blocks | Return all assignment blocks in a Pivot space. |
| `PIVOT_LIST_SPACE_DESCRIPTION_BLOCKS` | List Space Description Blocks | Return a space's description blocks and all of their descendants. |
| `PIVOT_LIST_SPACE_HOME_BLOCKS` | List Space Home Blocks | Return the blocks displayed on a Pivot space home. |
| `PIVOT_LIST_SPACE_MEMBERS` | List Space Members | Return one page of members in a Pivot space. By default, only active members are returned; use status to include other membership states. |
| `PIVOT_LIST_SPACE_ROLES` | List Space Roles | Return the roles available in a Pivot space. |
| `PIVOT_LIST_SPACE_ROOM_BLOCKS` | List Space Room Blocks | Return all room blocks and their parallel room metadata in a Pivot space. |
| `PIVOT_LIST_SPACES` | List Spaces | Return one page of spaces visible in a Pivot organization. Supports exact status, type, template, label, name-search, and sort filters. Templates are excluded and only active spaces are returned unless those filters are set. |
| `PIVOT_LIST_THREAD_MESSAGES` | List Thread Messages | Return one page of messages in a Pivot thread, oldest first. Continue with next_cursor until has_more is false. |
| `PIVOT_LIST_WEBHOOK_LOGS` | List Webhook Logs | Return one page of delivery logs for a Pivot webhook. Pivot retains webhook logs for 30 days. |
| `PIVOT_LIST_WEBHOOKS` | List Webhooks | Return webhooks for a Pivot organization, optionally filtering by a case-insensitive substring of the webhook name. |
| `PIVOT_REMOVE_GROUP_MEMBERS` | Remove Group Members | Remove one or more users from a Pivot group. |
| `PIVOT_REMOVE_SPACE_LABEL` | Remove Space Label | Remove one label from a Pivot space by space and label UUID. |
| `PIVOT_REMOVE_SPACE_MEMBER` | Remove Space Member | Remove a user from a Pivot space by space-member UUID. |
| `PIVOT_REQUEST_RECORDING_DOWNLOAD` | Request Recording Download | Ensure a downloadable MP4 rendition exists for a Pivot room recording. When ready is false, the rendition is still being prepared; retry shortly with the same room_id, recording_id, and created_at. The direct download URL is returned when ready is true. |
| `PIVOT_REVOKE_ORGANIZATION_INVITE` | Revoke Organization Invite | Revoke a Pivot organization invitation by its invitation ID and email address. |
| `PIVOT_REVOKE_ROOM_INVITE` | Revoke Room Invite | Revoke a Pivot room invitation by room ID and email address. |
| `PIVOT_REVOKE_SPACE_INVITE` | Revoke Space Invite | Revoke a Pivot space invitation by organization, space, and email address. |
| `PIVOT_ROTATE_WEBHOOK_SECRET` | Rotate Webhook Secret | Rotate the organization-wide webhook signing secret used for future Pivot webhooks. Existing webhooks retain the current secret. Store the returned one-time secret securely. |
| `PIVOT_SEND_ROOM_MESSAGE` | Send Room Message | Send plain text or an advanced rich-content document to a Pivot room, optionally with file attachments or as a thread, inline, or recording reply. Sending delivers the message to room participants and cannot be safely reversed. |
| `PIVOT_SUBMIT_BLOCK_RESPONSE` | Submit Block Response | Irreversibly submit a Pivot block response. This sends or marks an existing draft response as submitted and cannot be safely undone. |
| `PIVOT_UPDATE_BLOCK` | Update Block | Update exactly one property of a Pivot block: its hide time, unhide time, or space-member sharing level. |
| `PIVOT_UPDATE_BLOCK_RESPONSE` | Update Block Response | Replace a Pivot block response with plain text, or use advanced rich content for formatting. |
| `PIVOT_UPDATE_BLOCK_SHARING_RULE` | Update Block Sharing Rule | Set the access level for a user, group, space role, membership tier, or space identified by the subject of a sharing rule on a Pivot block. |
| `PIVOT_UPDATE_LABEL` | Update Label | Update the name, color, or both for a Pivot label. Pivot clears the existing color when a name update omits color, so resend the current color to preserve it. |
| `PIVOT_UPDATE_ROOM` | Update Room | Update one or more settings for a Pivot room, including its name, topic, type, and recording preferences. |
| `PIVOT_UPDATE_ROOM_MESSAGE` | Update Room Message | Replace a sent Pivot room message with plain text or an advanced rich-content document. sent_at identifies the original message; include thread_root_message_id and thread_parent_message_id for a threaded message, or parent_recording_id for a recording comment. |
| `PIVOT_UPDATE_SPACE` | Update Space | Update one or more settings or metadata fields for an existing Pivot space. Only provided fields are changed. |
| `PIVOT_UPDATE_SPACE_MEMBER` | Update Space Member | Update a Pivot space member's roles, title, status, or any combination of those fields. The member ID is the space-membership UUID, not a user UUID. |
| `PIVOT_UPDATE_WEBHOOK` | Update Webhook | Update one or more properties of a Pivot webhook. Supplying subscriptions replaces the webhook's complete existing subscription set. |

## Supported Triggers

None listed.

## Installation and MCP Setup

### Path 1: SDK Installation

#### Path 1, Step 1: Install Composio

Install the Composio SDK, the OpenAI provider, and the OpenAI SDK
```python
pip install composio composio_openai openai
```

```typescript
npm install @composio/core @composio/openai openai
```

#### Path 1, Step 2: Create a Composio session

Initialize Composio with the OpenAI Responses provider and create a session scoped to Pivot
```python
import json
from openai import OpenAI
from composio import Composio
from composio_openai import OpenAIResponsesProvider

composio = Composio(provider=OpenAIResponsesProvider())
client = OpenAI()

session = composio.create(user_id="your-user-id", toolkits=["pivot"])
tools = session.tools()
```

```typescript
import OpenAI from "openai";
import { Composio } from "@composio/core";
import { OpenAIResponsesProvider } from "@composio/openai";

const composio = new Composio({ provider: new OpenAIResponsesProvider() });
const client = new OpenAI();

const session = await composio.create("your-user-id", { toolkits: ["pivot"] });
const tools = await session.tools();
```

#### Path 1, Step 3: Run Pivot tools with your agent

Send a request, execute the Pivot tool calls through the session, and print the final answer
```python
response = client.responses.create(
    model="gpt-5.6-sol",
    tools=tools,
    input=[{"role": "user", "content": "Create a room named Product Launch in my Pivot workspace"}],
)

while True:
    tool_calls = [o for o in response.output if o.type == "function_call"]
    if not tool_calls:
        break
    results = composio.provider.handle_tool_calls(response=response, session=session)
    response = client.responses.create(
        model="gpt-5.6-sol",
        tools=tools,
        previous_response_id=response.id,
        input=[
            {"type": "function_call_output", "call_id": call.call_id, "output": json.dumps(results[i])}
            for i, call in enumerate(tool_calls)
        ],
    )

print(response.output_text)
```

```typescript
let response = await client.responses.create({
  model: "gpt-5.6-sol",
  tools,
  input: [{ role: "user", content: "Create a room named Product Launch in my Pivot workspace" }],
});

while (response.output.some((o) => o.type === "function_call")) {
  const outputs = await composio.provider.handleToolCalls(session, response.output);
  response = await client.responses.create({
    model: "gpt-5.6-sol",
    tools,
    previous_response_id: response.id,
    input: outputs,
  });
}

console.log(response.output_text);
```

### Path 2: MCP Server Setup

#### Path 2, Step 1: Install Composio

Install the Composio SDK and your agent framework
```python
pip install composio claude-agent-sdk
```

```typescript
npm install @composio/core ai @ai-sdk/mcp @ai-sdk/openai
```

#### Path 2, Step 2: Create a session with MCP enabled

Create a session scoped to Pivot and read its MCP URL and headers
```python
from composio import Composio

composio = Composio()
session = composio.create(user_id="your-user-id", toolkits=["pivot"], mcp=True)
```

```typescript
import { Composio } from "@composio/core";

const composio = new Composio();
const { mcp } = await composio.create("your-user-id", {
  toolkits: ["pivot"],
  mcp: true,
});
```

#### Path 2, Step 3: Connect your agent to the MCP server

Pass the session's MCP URL and headers to your agent and run a Pivot request
```python
import asyncio
from claude_agent_sdk import ClaudeSDKClient, ClaudeAgentOptions, AssistantMessage, TextBlock

options = ClaudeAgentOptions(
    mcp_servers={
        "composio": {
            "type": "http",
            "url": session.mcp.url,
            "headers": session.mcp.headers,
        }
    },
    system_prompt="You are a helpful assistant with access to Pivot tools.",
    tools=[],
    allowed_tools=["mcp__composio__*"],
)

async def main():
    async with ClaudeSDKClient(options=options) as client:
        await client.query("Create a room named Product Launch in my Pivot workspace")
        async for message in client.receive_response():
            if isinstance(message, AssistantMessage):
                for block in message.content:
                    if isinstance(block, TextBlock):
                        print(block.text)

asyncio.run(main())
```

```typescript
import { createMCPClient } from "@ai-sdk/mcp";
import { openai } from "@ai-sdk/openai";
import { generateText, stepCountIs } from "ai";

const client = await createMCPClient({
  transport: { type: "http", url: mcp.url, headers: mcp.headers },
});

const { text } = await generateText({
  model: openai("gpt-5.6-sol"),
  tools: await client.tools(),
  prompt: "Create a room named Product Launch in my Pivot workspace",
  stopWhen: stepCountIs(10),
});

console.log(text);
await client.close();
```

## Why Use Composio?

### 1. AI Native Pivot Integration

- Supports both Pivot MCP and direct API based integrations
- Structured, LLM-friendly schemas for reliable tool execution
- Rich coverage for reading, writing, and querying Pivot organizations, spaces, rooms, messages, goals, and members

### 2. Secure API Key Handling

- Connect Pivot with API keys without embedding credentials in agent prompts or application code
- Central place to manage, scope, and revoke Pivot access
- Per user and per environment credentials for safer team workflows

### 3. Agent Optimized Design

- Tools are tuned using real error and success rates to improve reliability over time
- Comprehensive execution logs so you always know what ran, when, and on whose behalf

### 4. Enterprise Grade Security

- Fine-grained RBAC so you control which agents and users can access Pivot
- Scoped, least privilege access to Pivot resources
- Full audit trail of agent actions to support review and compliance

## Use Pivot with any AI Agent Framework

Choose a framework you want to connect Pivot with:

- [ChatGPT](https://composio.dev/toolkits/pivot/framework/chatgpt)
- [Claude Cowork](https://composio.dev/toolkits/pivot/framework/claude-cowork)
- [Hermes](https://composio.dev/toolkits/pivot/framework/hermes-agent)
- [Atomic Agent](https://composio.dev/toolkits/pivot/framework/atomic-agent)

## Related Toolkits

- [Gmail](https://composio.dev/toolkits/gmail) - Gmail is Google's email service with powerful spam protection, search, and G Suite integration. It keeps your inbox organized and makes communication fast and reliable.
- [Outlook](https://composio.dev/toolkits/outlook) - Outlook is Microsoft's email and calendaring platform for unified communications and scheduling. It helps users stay organized with powerful email, contacts, and calendar management.
- [Google Sheets](https://composio.dev/toolkits/googlesheets) - Google Sheets is a cloud-based spreadsheet tool for real-time collaboration and data analysis. It lets teams work together from anywhere, updating information instantly.
- [Notion](https://composio.dev/toolkits/notion) - Notion is a collaborative workspace for notes, docs, wikis, and tasks. It streamlines team knowledge, project tracking, and workflow customization in one place.
- [Slack](https://composio.dev/toolkits/slack) - Slack is a channel-based messaging platform for teams and organizations. It helps people collaborate in real time, share files, and connect all their tools in one place.
- [Airtable](https://composio.dev/toolkits/airtable) - Airtable combines the flexibility of spreadsheets with the power of a database for easy project and data management. Teams use Airtable to organize, track, and collaborate with custom views and automations.
- [Gong](https://composio.dev/toolkits/gong) - Gong is a platform for video meetings, call recording, and team collaboration. It helps teams capture conversations, analyze calls, and turn insights into action.
- [Asana](https://composio.dev/toolkits/asana) - Asana is a collaborative work management platform for teams to organize and track projects. It streamlines teamwork, boosts productivity, and keeps everyone aligned on goals.
- [Google Tasks](https://composio.dev/toolkits/googletasks) - Google Tasks is a to-do list and task management tool integrated into Gmail and Google Calendar. It helps you organize, track, and complete tasks across your Google ecosystem.
- [Linear](https://composio.dev/toolkits/linear) - Linear is a modern issue tracking and project planning tool for fast-moving teams. It helps streamline workflows, organize projects, and boost productivity.
- [Microsoft teams](https://composio.dev/toolkits/microsoft_teams) - Microsoft Teams is a collaboration platform that combines chat, meetings, and file sharing within Microsoft 365. It keeps distributed teams connected and productive through seamless virtual communication.
- [Jira](https://composio.dev/toolkits/jira) - Jira is Atlassian’s platform for bug tracking, issue tracking, and agile project management. It helps teams organize work, prioritize tasks, and deliver projects efficiently.
- [Clickup](https://composio.dev/toolkits/clickup) - ClickUp is an all-in-one productivity platform for managing tasks, docs, goals, and team collaboration. It streamlines project workflows so teams can work smarter and stay organized in one place.
- [Slackbot](https://composio.dev/toolkits/slackbot) - Slackbot is a conversational automation tool for Slack that handles reminders, notifications, and automated responses. It boosts team productivity by streamlining onboarding, answering FAQs, and managing timely alerts—all right inside Slack.
- [Monday](https://composio.dev/toolkits/monday) - Monday.com is a customizable work management platform for project planning and collaboration. It helps teams organize tasks, automate workflows, and track progress in real time.
- [2chat](https://composio.dev/toolkits/_2chat) - 2chat is an API platform for WhatsApp and multichannel text messaging. It streamlines chat automation, group management, and real-time messaging for developers.
- [Addressfinder](https://composio.dev/toolkits/addressfinder) - Addressfinder is a data quality platform for verifying addresses, emails, and phone numbers. It helps you ensure accurate customer and contact data every time.
- [Agent mail](https://composio.dev/toolkits/agent_mail) - Agent mail provides AI agents with dedicated email inboxes for sending, receiving, and managing emails. It empowers agents to communicate autonomously with people, services, and other agents—no human intervention needed.
- [Agiled](https://composio.dev/toolkits/agiled) - Agiled is an all-in-one business management platform for CRM, projects, and finance. It helps you streamline workflows, consolidate client data, and manage business processes in one place.
- [Aircall](https://composio.dev/toolkits/aircall) - Aircall is a cloud-based phone and call-center platform for business communications. It centralizes calls, contacts, teams, numbers, and tags in one place.

## Frequently Asked Questions

### Do I need my own developer credentials to use Pivot with Composio?

Yes, Pivot requires you to configure your own API key. Once set up, Composio handles secure credential storage and API request handling for you.

### Can I use multiple toolkits together?

Yes! Composio's Tool Router enables agents to use multiple toolkits. [Learn more](https://docs.composio.dev/tool-router/overview).

### Is Composio secure?

Composio is SOC 2 and ISO 27001 compliant with all data encrypted in transit and at rest. [Learn more](https://trust.composio.dev).

### What if the API changes?

Composio maintains and updates all toolkit integrations automatically, so your agents always work with the latest API versions.

---
[See all toolkits](https://composio.dev/toolkits) · [Composio docs](https://docs.composio.dev/llms.txt)
