> ## Documentation Index
> Fetch the complete documentation index at: https://agentrein.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Connectors

> How AgentRein intercepts your existing API clients.

## Bring Your Own Client

AgentRein's SDK contains zero connector logic. There are no Stripe, GitHub, or Slack classes to import from `agentrein`. Instead, you install and initialize your own standard SDK clients as you normally would, then pass them to `wrap()`.

<CodeGroup>
  ```ts TypeScript theme={null}
  import { AgentRein } from 'agentrein';
  import { Octokit } from '@octokit/rest';
  import { WebClient } from '@slack/web-api';
  import Stripe from 'stripe';

  const agentrein = new AgentRein({ apiKey: process.env.AGENTREIN_API_KEY });

  // Your own clients — initialized with your own credentials
  const octokit  = new Octokit({ auth: process.env.GITHUB_TOKEN });
  const slack    = new WebClient(process.env.SLACK_TOKEN);
  const stripe   = new Stripe(process.env.STRIPE_KEY);

  const session = await agentrein.newSession({ agentId: 'my-agent', intent: '...' });

  // Wrap once — use exactly as before
  const agentOctokit = agentrein.wrap(octokit, session, { connector: 'github' });
  const agentSlack   = agentrein.wrap(slack,   session, { connector: 'slack' });
  const agentStripe  = agentrein.wrap(stripe,  session, { connector: 'stripe' });

  await agentOctokit.issues.create({ owner: 'my-org', repo: 'my-repo', title: 'Task' });
  await agentSlack.chat.postMessage({ channel: '#ops', text: 'Issue created' });
  await agentStripe.invoices.create({ customer: 'cus_123' });
  ```

  ```python Python theme={null}
  import os
  from agentrein import AgentRein
  from github import Github
  from slack_sdk import WebClient
  import stripe

  agentrein = AgentRein(api_key=os.environ["AGENTREIN_API_KEY"])

  # Your own clients — initialized with your own credentials
  gh = Github(os.environ["GITHUB_TOKEN"])
  repo = gh.get_repo("my-org/my-repo")
  slack = WebClient(token=os.environ["SLACK_TOKEN"])
  stripe.api_key = os.environ["STRIPE_KEY"]

  session = agentrein.new_session(agent_id="my-agent", intent="...")

  # Wrap once — use exactly as before
  agent_repo  = agentrein.wrap(repo,  session, connector="github")
  agent_slack = agentrein.wrap(slack, session, connector="slack")

  agent_repo.create_issue(title="Task")
  agent_slack.chat_postMessage(channel="#ops", text="Issue created")
  ```
</CodeGroup>

## How the Proxy Works

`wrap()` returns a proxy that is transparent to your code — types, autocompletion, and runtime behavior are all preserved. When you call any method on the wrapped client:

1. The proxy captures the method path and arguments
2. Your original SDK method executes normally
3. AgentRein logs the action to the backend
4. If the call throws, AgentRein triggers a LIFO rollback of all previous actions in the session

<Info>
  In TypeScript, step 3 is fire-and-forget (non-blocking). In Python (v1, synchronous), this logging call completes before `wrap()` returns.
</Info>

<Warning>
  **Python-specific:** wrap the specific object whose methods you're about to call directly, not a top-level client several calls away. Many Python SDKs return a new, unwrapped object from getter methods (`get_repo()`, etc.). If your workflow needs to track a multi-step chain, wrap the specific resource object right before calling logged methods on it.
</Warning>

## Connector Prefix & Total Action Coverage

The `connector` string passed to `wrap()` must match the prefix registered in the backend rollback registry. AgentRein supports **142 actions across 9 connectors**:

| Prefix | Connector Name | Registered Action Count | External SDK (TypeScript) | External SDK (Python) |
| - | - | - | - | - |
| `github` | GitHub | 20 actions | `@octokit/rest` | `PyGithub` |
| `slack` | Slack | 24 actions | `@slack/web-api` | `slack_sdk` |
| `stripe` | Stripe | 10 actions | `stripe` | `stripe` |
| `hubspot` | HubSpot | 17 actions | axios (REST) | `httpx`/`requests` (REST) |
| `salesforce` | Salesforce | 28 actions | axios (REST) | `simple-salesforce` |
| `notion` | Notion | 9 actions | axios (REST) | `httpx`/`requests` (REST) |
| `gmail` | Gmail | 16 actions | `googleapis` | `google-api-python-client` |
| `gdrive` | Google Drive | 10 actions | `googleapis` | `google-api-python-client` |
| `gsheets` | Google Sheets | 8 actions | `googleapis` | `google-api-python-client` |

***

## GitHub Connector Actions (20 Actions)

### Files

| Action | Description / Rollback Behavior |
| - | - |
| `github.files.create` | Create a repository file. Rollback deletes the created file. |
| `github.files.update` | Update a repository file. Rollback restores content from `beforeState`. |
| `github.files.delete` | Delete a repository file. Rollback recreates file content from `beforeState`. |

### Issues & Comments

| Action | Description / Rollback Behavior |
| - | - |
| `github.issues.create` | Create an issue. Rollback closes the issue. |
| `github.issues.update` | Update an issue. Rollback restores fields from `beforeState`. |
| `github.issues.lock` | Lock an issue. Rollback unlocks the issue. |
| `github.issueComments.create` | Create an issue comment. Rollback deletes the comment. |

### Pull Requests & Comments

| Action | Description / Rollback Behavior |
| - | - |
| `github.pullRequests.update` | Update a pull request. Rollback restores title, body, and state from `beforeState`. |
| `github.pullRequests.close` | Close a pull request. Rollback reopens the pull request. |
| `github.pullRequests.reopen` | Reopen a pull request. Rollback closes the pull request. |
| `github.pullRequests.merge` | Merge a pull request. **Non-reversible** — safety level HIGH (requires human approval). |
| `github.pullRequestComments.update` | Update a PR comment. Rollback restores comment body from `beforeState`. |

### Releases

| Action | Description / Rollback Behavior |
| - | - |
| `github.releases.create` | Create a release. Rollback deletes the created release. |
| `github.releases.update` | Update a release. Rollback restores name, body, and tag from `beforeState`. |
| `github.releases.delete` | Delete a release. **Non-reversible** — safety level HIGH (requires human approval). |

### Reviews

| Action | Description / Rollback Behavior |
| - | - |
| `github.reviews.create` | Submit a pull request review. **Non-reversible** — safety level HIGH (requires human approval). |

### Workflows

| Action | Description / Rollback Behavior |
| - | - |
| `github.workflows.enable` | Enable a workflow. Rollback disables the workflow. |
| `github.workflows.disable` | Disable a workflow. Rollback enables the workflow. |
| `github.workflows.dispatch` | Dispatch a workflow run. **Non-reversible** — safety level HIGH (requires human approval). |

### Users

| Action | Description / Rollback Behavior |
| - | - |
| `github.users.invite` | Invite a user to an organization. Rollback cancels the pending invitation. |

***

## Slack Connector Actions (24 Actions)

### Messages

| Action | Description / Rollback Behavior |
| - | - |
| `slack.chat.postMessage` | Post a chat message. Rollback updates the message to a Tombstone (`⚠️ Reverted by AgentRein: [reason]`) and clears all blocks and attachments. |
| `slack.chat.update` | Update a chat message. Rollback restores content from `beforeState`. |
| `slack.chat.delete` | Delete a chat message. Re-posts original text from `beforeState` with a restoration notice. |

### Channels

| Action | Description / Rollback Behavior |
| - | - |
| `slack.channels.create` | Create a channel. Rollback archives the created channel. |
| `slack.channels.rename` | Rename a channel. Rollback restores previous channel name from `beforeState`. |
| `slack.channels.setTopic` | Set topic. Rollback restores topic from `beforeState`. |
| `slack.channels.setPurpose` | Set purpose. Rollback restores purpose from `beforeState`. |
| `slack.channels.archive` | Archive a channel. Rollback unarchives the channel. |
| `slack.channels.invite` | Invite users. Rollback kicks invited users. |
| `slack.channels.kick` | Remove a user. Rollback re-invites the user. |
| `slack.channels.join` | Join a channel. Rollback leaves the channel. |
| `slack.channels.leave` | Leave a channel. Rollback re-joins the channel. |
| `slack.channels.close` | Close direct message. Rollback opens channel. |
| `slack.channels.open` | Open direct message. Rollback closes channel. |

### Files

| Action | Description / Rollback Behavior |
| - | - |
| `slack.files.upload` | Upload a file. Rollback deletes uploaded file. |
| `slack.files.delete` | Delete a file. **Non-reversible** — safety level HIGH (requires human approval). |

### Reactions & Stars

| Action | Description / Rollback Behavior |
| - | - |
| `slack.reactions.add` | Add reaction. Rollback removes reaction. |
| `slack.stars.add` | Add star. Rollback removes star. |

### User Profile & User Groups

| Action | Description / Rollback Behavior |
| - | - |
| `slack.userProfile.update` | Update profile fields. Rollback restores from `beforeState`. |
| `slack.userGroups.create` | Create user group. Rollback disables group. |
| `slack.userGroups.update` | Update user group. Rollback restores from `beforeState`. |
| `slack.userGroups.users.update` | Update member list. Rollback restores member list from `beforeState`. |
| `slack.userGroups.enable` | Enable user group. Rollback disables group. |
| `slack.userGroups.disable` | Disable user group. Rollback enables group. |

***

## Stripe Connector Actions (10 Actions)

### Invoices & Customers

| Action | Description / Rollback Behavior |
| - | - |
| `stripe.invoices.create` | Create draft invoice. Rollback deletes draft invoice. |
| `stripe.customers.create` | Create customer. Rollback deletes customer. |
| `stripe.customers.delete` | Permanently delete customer. **Non-reversible** — safety level HIGH. |

### Charges & Refunds

| Action | Description / Rollback Behavior |
| - | - |
| `stripe.charges.create` | Create charge. **Non-reversible** — safety level HIGH. |
| `stripe.refunds.create` | Create refund. **Non-reversible** — safety level HIGH. |

### Coupons & Meter Events

| Action | Description / Rollback Behavior |
| - | - |
| `stripe.coupons.create` | Create coupon. Rollback deletes coupon. |
| `stripe.coupons.delete` | Delete coupon. **Non-reversible** — safety level HIGH. |
| `stripe.meterEvents.create` | Create meter event. Rollback cancels via adjustment within 24h. |

### Payment Methods

| Action | Description / Rollback Behavior |
| - | - |
| `stripe.paymentMethods.attach` | Attach payment method. Rollback detaches method. |
| `stripe.paymentMethods.detach` | Detach payment method. **Non-reversible** — safety level HIGH. |

***

## HubSpot Connector Actions (17 Actions)

### CRM Objects

| Action | Description / Rollback Behavior |
| - | - |
| `hubspot.contacts.create` | Create contact. Rollback deletes contact. |
| `hubspot.contacts.update` | Update contact. Rollback restores from `beforeState`. |
| `hubspot.contacts.delete` | Delete contact. **Non-reversible** — safety level HIGH. |
| `hubspot.companies.create` | Create company. Rollback archives company. |
| `hubspot.companies.update` | Update company. Rollback restores from `beforeState`. |
| `hubspot.companies.delete` | Delete company. **Non-reversible** — safety level HIGH. |
| `hubspot.deals.create` | Create deal. Rollback deletes deal. |
| `hubspot.deals.update` | Update deal. Rollback restores from `beforeState`. |
| `hubspot.deals.delete` | Delete deal. **Non-reversible** — safety level HIGH. |
| `hubspot.tickets.create` | Create ticket. Rollback archives ticket. |
| `hubspot.tickets.update` | Update ticket. Rollback restores from `beforeState`. |
| `hubspot.tickets.delete` | Delete ticket. **Non-reversible** — safety level HIGH. |

### Engagements, Associations & Lists

| Action | Description / Rollback Behavior |
| - | - |
| `hubspot.engagements.create` | Create engagement. Rollback archives engagement. |
| `hubspot.engagements.delete` | Delete engagement. **Non-reversible** — safety level HIGH. |
| `hubspot.associations.create` | Create association. Rollback removes association. |
| `hubspot.contactLists.addContact` | Add contact to list. Rollback removes contact. |
| `hubspot.contactLists.removeContact` | Remove contact from list. Rollback adds contact back. |

***

## Salesforce Connector Actions (28 Actions)

### Objects & Records

| Action | Description / Rollback Behavior |
| - | - |
| `salesforce.accounts.create` | Create Account. Rollback deletes record. |
| `salesforce.accounts.update` | Update Account. Rollback restores from `beforeState`. |
| `salesforce.accounts.delete` | Delete Account. **Non-reversible** — safety level HIGH. |
| `salesforce.contacts.create` | Create Contact. Rollback deletes record. |
| `salesforce.contacts.update` | Update Contact. Rollback restores from `beforeState`. |
| `salesforce.contacts.delete` | Delete Contact. **Non-reversible** — safety level HIGH. |
| `salesforce.leads.create` | Create Lead. Rollback deletes record. |
| `salesforce.leads.update` | Update Lead. Rollback restores from `beforeState`. |
| `salesforce.leads.delete` | Delete Lead. **Non-reversible** — safety level HIGH. |
| `salesforce.opportunities.create` | Create Opportunity. Rollback deletes record. |
| `salesforce.opportunities.update` | Update Opportunity. Rollback restores from `beforeState`. |
| `salesforce.opportunities.delete` | Delete Opportunity. **Non-reversible** — safety level HIGH. |
| `salesforce.cases.create` | Create Case. Rollback deletes record. |
| `salesforce.cases.update` | Update Case. Rollback restores from `beforeState`. |
| `salesforce.cases.delete` | Delete Case. **Non-reversible** — safety level HIGH. |
| `salesforce.customObjects.create` | Create Custom Object. Rollback deletes record. |
| `salesforce.customObjects.update` | Update Custom Object. Rollback restores from `beforeState`. |
| `salesforce.customObjects.delete` | Delete Custom Object. **Non-reversible** — safety level HIGH. |
| `salesforce.attachments.create` | Create Attachment. Rollback deletes attachment. |
| `salesforce.attachments.update` | Update Attachment. Rollback restores from `beforeState`. |
| `salesforce.attachments.delete` | Delete Attachment. **Non-reversible** — safety level HIGH. |
| `salesforce.tasks.create` | Create Task. Rollback deletes task. |
| `salesforce.tasks.update` | Update Task. Rollback restores from `beforeState`. |
| `salesforce.tasks.delete` | Delete Task. **Non-reversible** — safety level HIGH. |
| `salesforce.documents.create` | Create Document. Rollback deletes document. |
| `salesforce.notes.create` | Create Note. Rollback deletes note. |
| `salesforce.caseComments.create` | Create Case Comment. Rollback deletes comment. |
| `salesforce.campaignMembers.create` | Create Campaign Member. Rollback deletes membership. |

***

## Notion Connector Actions (9 Actions)

### Pages & Database Items

| Action | Description / Rollback Behavior |
| - | - |
| `notion.pages.create` | Create page. Rollback moves to trash. |
| `notion.pages.update` | Update page. Rollback restores from `beforeState`. |
| `notion.pages.archive` | Archive page. Rollback untrashes page (`notion.pages.restore`). |
| `notion.pages.restore` | Restore page. Rollback trashes page (`notion.pages.archive`). |
| `notion.database_items.create` | Create database item. Rollback moves to trash. |
| `notion.database_items.update` | Update database item. Rollback restores from `beforeState`. |
| `notion.database_items.archive` | Archive database item. Rollback untrashes item (`notion.database_items.restore`). |
| `notion.database_items.restore` | Restore database item. Rollback trashes item (`notion.database_items.archive`). |
| `notion.blocks.append` | Append blocks. Rollback deletes appended blocks. |

***

## Gmail Connector Actions (16 Actions)

### Messages & Drafts

| Action | Description / Rollback Behavior |
| - | - |
| `gmail.messages.send` | Send email. Rollback sends correction reply. |
| `gmail.messages.reply` | Reply email. Rollback sends correction reply. |
| `gmail.messages.trash` | Trash message. Rollback untrashes message. |
| `gmail.messages.untrash` | Untrash message. Rollback trashes message. |
| `gmail.messages.markAsRead` | Mark read. Rollback restores `UNREAD` label. |
| `gmail.messages.markAsUnread` | Mark unread. Rollback removes `UNREAD` label. |
| `gmail.messages.delete` | Delete message. **Non-reversible** — safety level HIGH. |
| `gmail.drafts.create` | Create draft. Rollback deletes draft. |
| `gmail.drafts.delete` | Delete draft. Rollback recreates draft from snapshot. |

### Threads & Labels

| Action | Description / Rollback Behavior |
| - | - |
| `gmail.threads.modify` | Modify thread labels. Rollback restores label IDs. |
| `gmail.threads.trash` | Trash thread. Rollback untrashes thread. |
| `gmail.threads.untrash` | Untrash thread. Rollback trashes thread. |
| `gmail.threads.delete` | Delete thread. **Non-reversible** — safety level HIGH. |
| `gmail.labels.create` | Create label. Rollback deletes label. |
| `gmail.labels.modify` | Modify message labels. Rollback restores label IDs. |
| `gmail.labels.delete` | Delete label. **Non-reversible** — safety level HIGH. |

***

## Google Drive Connector Actions (10 Actions)

### Files & Drives

| Action | Description / Rollback Behavior |
| - | - |
| `gdrive.files.create` | Create file. Rollback moves to trash. |
| `gdrive.files.update` | Update file metadata. Rollback restores from `beforeState`. |
| `gdrive.files.move` | Move file. Rollback reverses move. |
| `gdrive.files.copy` | Copy file. Rollback moves copy to trash. |
| `gdrive.files.trash` | Trash file. Rollback untrashes file. |
| `gdrive.files.share` | Share file. Rollback revokes granted permission. |
| `gdrive.files.delete` | Delete file. **Non-reversible** — safety level HIGH. |
| `gdrive.drives.create` | Create Shared Drive. Rollback deletes empty Shared Drive. |
| `gdrive.drives.update` | Update Shared Drive. Rollback restores from `beforeState`. |
| `gdrive.drives.delete` | Delete Shared Drive. **Non-reversible** — safety level HIGH. |

***

## Google Sheets Connector Actions (8 Actions)

### Spreadsheets, Sheets & Values

| Action | Description / Rollback Behavior |
| - | - |
| `gsheets.spreadsheets.create` | Create spreadsheet. Rollback moves spreadsheet to trash. |
| `gsheets.sheets.add` | Add sheet tab. Rollback deletes sheet tab. |
| `gsheets.values.append` | Append values. **Non-reversible** — safety level HIGH. |
| `gsheets.values.update` | Update values range. Rollback restores values from `beforeState`. |
| `gsheets.values.clear` | Clear values range. **Non-reversible** — safety level HIGH. |
| `gsheets.rows.insert` | Insert rows. **Non-reversible** — safety level HIGH. |
| `gsheets.rows.delete` | Delete rows. **Non-reversible** — safety level HIGH. |
| `gsheets.rows.appendOrUpdate` | Append/update rows. **Non-reversible** — safety level HIGH. |


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.