# Streak MCP connector

The Streak connector lets Claude, ChatGPT, Cursor, and any MCP client read and update your Streak pipelines, boxes, stages, and tasks as you, with every change recorded in an audit log.

Source: https://elaichi.ai/connectors/streak/

## Facts

| | |
| --- | --- |
| Application | Streak |
| Category | CRM |
| AI tools | 24 |
| Authentication | Connects with an API key |
| Needs your own OAuth app | No |
| MCP endpoint | https://api.elaichi.ai/mcp |
| Works with | Claude, ChatGPT, Cursor, any MCP client, and the Elaichi Agent |
| Tools advertised by name | Yes |

## What you can ask once Streak is connected

- List every stage in the Enterprise Sales pipeline.
- Which Streak boxes have overdue box tasks this week?
- Summarize pipeline stages by team for the weekly review.

## Connect Streak in Elaichi

This happens once for the organization, before any client is involved.

1. Open Connections, choose Add connection, and pick Streak.
2. Optionally set Share with, then press Connect.
3. Paste a Streak API key. One person generates a token in Streak and pastes it once. Everyone else works through Share with, and never sees it.

Credentials are vaulted and nobody, including the AI, reads them back. The connection becomes a toolbox immediately, so you can curate which Streak tools are exposed, rename them, or freeze arguments before anyone points a client at it.

## Connect Streak to Claude

Endpoint: https://api.elaichi.ai/mcp

1. Open Customize, then Connectors.
2. Press Add.
3. Name it, paste the MCP server URL, then Continue.
4. Sign in and approve.

On Team and Enterprise, an Owner adds it once. Everyone else turns it on for themselves.

## Connect Streak to ChatGPT

Endpoint: https://api.elaichi.ai/mcp

1. Open Plugins, then press the + button.
2. Name it and paste the endpoint into Server URL.
3. Leave Authentication on OAuth, then tick the risk acknowledgement.
4. Press Create, then sign in and approve.

Works on the web today. The plugin directory lives at chatgpt.com/plugins.

## Connect Streak to Cursor

Endpoint: https://api.elaichi.ai/mcp

1. Open `~/.cursor/mcp.json`.
2. Add the endpoint under `mcpServers`.
3. Reload Cursor, then sign in and approve.

Set up per machine, so repeat it on each computer you work from.

## Connect Streak to any MCP client

Endpoint: https://api.elaichi.ai/mcp

1. Add the endpoint as a remote MCP server.
2. Sign in and approve.

The Elaichi Agent already has these tools, with nothing to set up.

## What the consent screen decides

Only Read is granted by default, which is not enough to call a Streak tool. Over MCP there is no trusted place to confirm a write in the moment, so the consent screen is the standing approval rather than a formality. Grant Read and Run tools. Think hard before granting Delete, which reaches into connected apps and cannot be undone.

## What teams do with Streak through Elaichi

### Catch a box up after a call

Sales. Tell the agent what happened on the call and it updates the box in Streak, moves it to the right stage, and adds the follow-up task so nothing slips between meetings.

### See what is stuck in the pipeline

Sales. Ask which boxes have sat in the same stage for weeks and get a plain list back from Streak, ready to work through before the pipeline review.

### Move candidates through hiring stages

Recruiting. Create a box for each new applicant, move it from screening to interview to offer, and set tasks for the hiring manager without leaving the chat.

### Track investor conversations in one place

Fundraising. Add a box for every investor you speak to, log the next step as a task, and ask for a summary of where each conversation stands before a board update.

### Keep renewals and onboarding tasks on schedule

Customer success. List the open box tasks due this week across the onboarding pipeline in Streak, mark the finished ones done, and push the rest to a realistic date.

### Set up and tidy pipelines for a new team

Operations. Create a fresh Streak pipeline, define its stages, and rename or remove stages that nobody uses, so a new team starts with a layout that matches how they work.

## Frequently asked questions

### How do I connect Streak to Claude?

Connect Streak in Elaichi first: open the Streak connector, paste the API key from your Streak settings, and Elaichi confirms the connection. Then in Claude go to Customize, then Connectors, then Add, and paste https://api.elaichi.ai/mcp as the endpoint. There is no OAuth application to register in Streak and no client ID or secret to generate, and the whole thing takes a few minutes.

### Does Streak work with ChatGPT and Cursor as well as Claude?

Yes. Once Streak is connected in Elaichi, the same endpoint, https://api.elaichi.ai/mcp, works in Claude, ChatGPT, Cursor, any other MCP client, and the Elaichi Agent. You connect Streak once and every client you use picks it up.

### What can an AI agent actually do with my Streak data?

With Streak connected, an agent can list your pipelines and the boxes in them, create a new box for a lead or candidate, update a box or move it to another stage, and add, complete, or reschedule the tasks attached to a box. It can also create and rearrange pipelines and stages, look up team members, and answer questions like which deals have not moved this month. It works from your live Streak records, not from a pasted spreadsheet.

### Does connecting Streak give the AI access to every pipeline in my workspace?

No. Access follows the person who signed in, so an agent working through your Streak connection sees only the pipelines and boxes your own Streak account can see, exactly as if you opened Streak in Gmail yourself. Elaichi can narrow that further by blocking specific actions, and it can never widen it beyond what Streak already lets you do.

### Can my team share one Streak connection?

Yes. One person connects Streak in Elaichi and shares the connection with a team, and nobody else ever handles the API key or sees it. Each teammate still signs in to Elaichi as themselves, so every box update or task created in Streak is recorded against the person who asked for it.

### Can I stop an agent from deleting or changing things in Streak?

Yes. Restrictions in Elaichi apply per action, so you can allow reading Streak pipelines and boxes while blocking deletion of boxes, stages, or pipelines, or blocking updates entirely for some teams. A blocked action is never shown to Claude, ChatGPT, Cursor, or any other client, so no prompt, accidental or otherwise, can reach it.

### What happens to a Streak connection when someone leaves the company?

When you offboard someone in Elaichi, their access to Streak through every connected client ends at once, and the audit log keeps the record of what they did while they were there. If they had shared a Streak connection with a team, that connection keeps working for everyone else, and an admin can reassign it. Disconnecting Streak once in Elaichi removes it from Claude, ChatGPT, Cursor, and every other client at the same time.

## All 24 Streak tools

Every tool below is callable through https://api.elaichi.ai/mcp once Streak is connected, subject to the toolbox it is in and the restrictions on the caller.

- **List all Streak me** (List). Get the current user in Streak. Returns email, lowercaseEmail, lastSeenTimestamp, isOauthComplete, and displayName fields that describe the authenticated user's account details.
- **List all Streak teams** (List). List teams the current user belongs to in Streak. Returns fields such as name, creationDate, members (with role, email, fullName, and image), sharingRestrictedToTeam, and key.
- **Get single Streak team by ID** (Get). Get a specific team in Streak by id. Requires id. Returns fields such as creationDate, creator, members (with role, displayName, email), name, and sharingRestrictedToTeam.
- **List all Streak pipelines** (List). List all pipelines in Streak. Returns an array of pipeline objects including key fields such as creatorKey, name, fields (schema for boxes), stages (stages of process), stageOrder (stage display order), aclEntries (access control list), owner, and timestamps.
- **Get single Streak pipeline by ID** (Get). Get a specific pipeline in Streak using id. Returns fields such as creatorKey, name, teamWide, fields, stages, stageOrder, creationTimestamp, lastUpdatedTimestamp, aclEntries, and owner.
- **Create a Streak pipeline** (Create). Create a pipeline in Streak. Requires name and teamKey. Returns pipelineKey, name, teamWide, fields, stages, stageOrder, creationTimestamp, lastUpdatedTimestamp, owner, and aclEntries.
- **Update a Streak pipeline by ID** (Update). Update a pipeline in Streak. Requires id. Returns fields such as creatorKey, name, description, orgWide, stageOrder, creationTimestamp, lastUpdatedTimestamp, aclEntries, owner, and pipelineKey.
- **Delete a Streak pipeline by ID** (Delete). Delete a pipeline in Streak. Requires id. You can only delete pipelines that are empty and have no boxes in them. Returns a success boolean indicating whether the deletion succeeded.
- **List all Streak stages** (List). List all stages in a pipeline in Streak. Requires pipeline_key. Returns stage objects with fields name (the stage name) and key (the unique stage identifier).
- **Get single Streak stage by ID** (Get). Get a specific stage in Streak using pipeline_key and id. Returns the stage name and key fields.
- **Create a Streak stage** (Create). Create a new stage in a specific pipeline in Streak. Requires pipeline_key and stage name. Returns the created stage’s name and key in the response.
- **Update a Streak stage by ID** (Update). Update a stage in Streak using pipeline_key and id. Returns name (the updated stage name) and key (the stage identifier) in the response.
- **Delete a Streak stage by ID** (Delete). Delete a specific stage in Streak using pipeline_key and id. The operation succeeds only if no boxes are tagged with this stage. Returns success status in the response.
- **List all Streak box tasks** (List). Get all tasks in a specific box in Streak. Requires box_key. Returns fields including text (task text), status (DONE or NOT_DONE), assignedToSharingEntries (assignees), and dueDate (optional reminder date).
- **Get single Streak box task by ID** (Get). Get a specific box-task in Streak using id. Returns fields like boxKey, pipelineKey, creatorKey, creationDate, text, status, and assignedToSharingEntries for the requested task.
- **Create a Streak box task** (Create). Create a task in Streak for a specific box identified by box_key. Returns task details including boxKey, pipelineKey, text, status (automatically set to NOT_DONE), assignedToSharingEntries, and timestamps.
- **Update a Streak box task by ID** (Update). Update a specific task in Streak using id. Returns key fields such as boxKey, pipelineKey, text, status, assignedToSharingEntries, and lastSavedTimestamp in the response.
- **Delete a Streak box task by ID** (Delete). Delete a specific task in Streak. Requires id. Returns a 'success' field indicating whether the deletion was successful.
- **List all Streak boxes** (List). List all boxes in a specific pipeline in Streak. Requires pipeline_key. Returns box details such as name, notes, stageKey, creationTimestamp, lastUpdatedTimestamp, followerCount, and key for each box.
- **Get single Streak box by ID** (Get). Get a specific box in Streak using id (boxKey). Returns details including pipelineKey, creatorKey, creationTimestamp, lastUpdatedTimestamp, name, stageKey, followerCount, commentCount, and related metadata.
- **Create a Streak box** (Create). Create a box in Streak using the provided pipeline_key. Returns box details including key, name, stageKey, creatorKey, creationTimestamp, and followerCount.
- **Update a Streak box by ID** (Update). Update a box in Streak using id. Returns key fields including pipelineKey, creatorKey, creationTimestamp, lastUpdatedTimestamp, name, stageKey, followerKeys, followerCount, commentCount, taskTotal, gmailThreadCount, fileCount, boxKey, and key.
- **Delete a Streak box by ID** (Delete). Delete a specific box in Streak using id. This also deletes related files, emails, and tasks. Returns success field indicating if deletion was successful.
- **Get single Streak user by ID** (Get). Get public details about a specific user in Streak identified by id. Returns email, lowercaseEmail, displayName, creationTimestamp, lastUpdatedTimestamp, lastSeenTimestamp, isOauthComplete, userKey, and key.
