Bring Your Own Client
AgentRein’s SDK contains zero connector logic. There are no Stripe, GitHub, or Slack classes to import fromagentrein. Instead, you install and initialize your own standard SDK clients as you normally would, then pass them to wrap().
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' });
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")
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:
- The proxy captures the method path and arguments
- Your original SDK method executes normally
- AgentRein logs the action to the backend
- If the call throws, AgentRein triggers a LIFO rollback of all previous actions in the session
In TypeScript, step 3 is fire-and-forget (non-blocking). In Python (v1, synchronous), this logging call completes before
wrap() returns.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.Connector Prefix & Total Action Coverage
Theconnector 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. |