# AI Agents for Observability (Claude Connector)
Source: https://docs.infinitewatch.ai/docs/connectors/contact-center-ai
Plan AI adoption, estimate QA ROI, and try a real-time audio demo for your contact center — directly in Claude.
InfiniteWatch Contact Center AI is a Claude connector (a remote MCP App) that helps
support, sales, QA, and operations leaders plan practical AI adoption for contact
centers. It builds consultative 30/60/90-day improvement plans, estimates the ROI of
automated QA with transparent assumptions, links to a real-time audio analysis demo,
and captures demo requests only after explicit consent.
## Setup
No setup or credentials required — this connector is public (`auth = none`). There is
nothing to install and no account to create.
* **Server URL:** `https://mcp-sales.infinitewatch.ai/mcp`
* **Transport:** Streamable HTTP (remote MCP)
* Add it from the Claude Connectors Directory, or as a custom connector using the
server URL above.
## What you can do
Just describe your contact center in chat and Claude picks the right tool.
### Tools
* **`create_contact_center_improvement_plan`** — A consultative 30/60/90-day AI
improvement plan from your situation, goals, and operating metrics. If you only
share a general intent, it asks one short question first so the plan is tailored
rather than generic.
* **`estimate_contact_center_ai_roi`** — A deterministic ROI estimate (no AI-invented
numbers) for automating QA: analyst time freed, QA coverage uplift, and optional
retention upside, with conservative / base / optimistic scenarios and visible,
editable assumptions.
* **`open_realtime_audio_demo`** — Opens the live real-time audio analysis demo at
[audiodemo.infinitewatch.ai](https://audiodemo.infinitewatch.ai).
* **`submit_contact_center_demo_lead`** — Sends a demo/contact request to InfiniteWatch.
Used only after you explicitly ask to be contacted, and only with your consent.
### Example prompts
* "How do I improve my contact center with AI? We run \~50,000 calls/month with 40
agents, only \~2% of calls are QA'd, AHT is high and quality is inconsistent."
* "We get 50,000 calls/month, \~2% QA sampling and \~6 min average handle time. What's
the ROI of automated QA?"
* "Is there a real-time audio analysis demo I can try?"
* "I'd like InfiniteWatch to contact me for a demo."
## Data handling & privacy
* Does **not** analyze call transcripts and does **not** store audio.
* Processes only the operating metrics you provide and, if you request contact, the
lead details you submit.
* Lead data is stored only when you explicitly ask to be contacted and consent.
* Raw inputs are not logged; only metadata (tool name, latency, status) is recorded.
See the full [privacy policy](https://www.infinitewatch.ai/privacy-policy).
## Notes
* ROI figures are indicative and **non-binding**; adjust the visible assumptions to
your operation.
* The real-time audio demo runs in your browser and uses your microphone; no audio is
stored by this connector.
## Support
* Email: [support@infinitewatch.ai](mailto:support@infinitewatch.ai)
* Website: [infinitewatch.ai](https://infinitewatch.ai)
# Quickstart
Source: https://docs.infinitewatch.ai/docs/quickstart
Get started with InfiniteWatch API in under 5 minutes
## Prerequisites
Before you begin, ensure you have:
* A valid Orgnization ID (contact [support@infinitewatch.ai](mailto:support@infinitewatch.ai) to get one)
## Step 1: Set Up Web (For Web Applications)
If you want to generate web insights from your website, start by adding the InfiniteWatch SDK. Choose the guide for your framework:
* [HTML / CDN](/docs/sdks/html) — single script tag, no build tools needed
* [React](/docs/sdks/react) — `@infinitewatch/react` provider component
* [Next.js](/docs/sdks/nextjs) — `@infinitewatch/next` for App Router
* [Vue.js](/docs/sdks/vue) — `@infinitewatch/vue` plugin
### Quick Start (HTML)
The simplest way is a single script tag in your HTML `
`:
```html theme={null}
```
Replace `YOUR_ORGANIZATION_ID` with your actual organization ID. You can find this in your [InfiniteWatch dashboard](https://app.infinitewatch.ai/dashboard/settings) or contact [support@infinitewatch.ai](mailto:support@infinitewatch.ai).
### How It Works
Once the SDK is set up, InfiniteWatch will automatically:
* Record user sessions and interactions
* Capture DOM events, mouse movements, and clicks
* Generate web insights data
* Send data to your InfiniteWatch dashboard
The script loads asynchronously, so it won't block your page load. It automatically starts recording when the page loads.
## Step 2: Identify Your Users
After the tracker is initialized and recording has started, you can associate sessions with specific users in your system using the `identify()` method. This links session recordings and analytics to individual users.
### Basic Usage
```javascript theme={null}
InfiniteWatch.identify({
external_id: 'user-12345'
});
```
### With Additional User Information
```javascript theme={null}
InfiniteWatch.identify({
external_id: 'user-12345',
email: 'user@example.com',
full_name: 'John Doe',
metadata: {
plan: 'premium',
signup_date: '2024-01-15'
}
});
```
### In a Login Flow
```javascript theme={null}
async function handleLogin(user) {
// Identify the logged-in user
InfiniteWatch.identify({
external_id: user.id,
email: user.email,
full_name: user.name
});
}
```
### What It Does
When you call `identify()`:
1. **Links Sessions to Users**: Associates the current session with your system's user identifier
2. **Persists Identity**: The `external_id` is stored in a cookie (2-year expiration) and persists across page reloads and sessions
3. **Auto-Collects Metadata**: Automatically gathers browser information (user agent, language, screen dimensions, timezone, etc.)
4. **Enriches Events**: All subsequent events will include the `external_id` in their payloads
**Required Field**: The `external_id` is required - use a stable identifier from your system (like a database user ID). Optional fields include `email`, `full_name`, and custom `metadata`.
**Privacy**: Only the `external_id` is persisted in cookies. Email, full name, and metadata are sent to the API but not stored in browser cookies.
### Best Practices
* **Call Early**: Identify users as soon as they're authenticated to ensure all session data is linked
* **Use Stable IDs**: Use consistent identifiers (database IDs) rather than temporary values
* **Update Anytime**: You can call `identify()` multiple times to update user information
For complete documentation on the `identify()` method, including all parameters, error handling, and advanced usage, see the [full identify() documentation](#).
## Step 3: Set Up Your Privacy Settings
InfiniteWatch records DOM content from your pages to generate web insights. You can control exactly what gets captured by adding privacy CSS classes to specific HTML elements. This lets you protect sensitive information while still collecting the data you need.
Always apply privacy classes to the specific elements you want to protect — never to the entire page or ``. Applying them too broadly will prevent InfiniteWatch from generating useful insights.
### Mask Sensitive Text (`rr-mask`)
The `rr-mask` class replaces all text content within an element (and its children) with masking characters. The element structure and layout remain visible in session replays, but the actual text is hidden.
```html theme={null}
John Doe
john.doe@example.com
+1 (555) 123-4567
```
Use `rr-mask` for any element that displays confidential text — names, email addresses, phone numbers, physical addresses, credit card details, affiliations, gender, or similar personal information.
### Block Entire Elements (`rr-block`)
The `rr-block` class completely prevents an element from being recorded. During replay, a placeholder with the original element's dimensions is shown instead.
```html theme={null}
```
Use `rr-block` for sensitive images, videos, embedded third-party content, or entire sections where you want nothing to be recorded at all.
We highly recommend adding `rr-block` to any area where users can freely write long-form content, as this can introduce noise and inaccurate signals into your web insights. This includes:
* **Live-chat widgets** — conversations often contain personal details and off-topic content
* **Review sections** — hotel, product, or service reviews contain free-form text that can skew behavioral insights
* **Comment sections, forums, or community feeds** — user-generated discussions are rarely relevant to UX analytics
* **Support ticket forms, feedback boxes, or survey text fields** — open-ended responses are meant for your team, not for session analysis
Blocking these elements keeps your insights focused on actual user interactions with your interface rather than the content users happen to type.
### Password Fields (Automatic)
All `input[type="password"]` fields are automatically masked — no additional classes or configuration required. You don't need to do anything extra to protect password inputs.
### Recommendations
* Apply `rr-mask` or `rr-block` to **specific elements**, not to your page wrapper or ``
* Use `rr-mask` for fields displaying confidential text (names, phones, addresses, emails, credit cards, affiliations, gender, etc.)
* Use `rr-block` for visual or embedded content you want fully hidden from recordings
* Add `rr-block` to any area where users write free-form content — live-chat widgets, review sections (product, hotel, service), comment sections, feedback forms, and support ticket inputs — to keep conversations private and avoid polluting your insights with unrelated text
* Password fields are handled automatically — no setup needed
* Test your privacy configuration before deploying to production to make sure the right content is protected
Applying privacy classes to the entire page will block or mask all content, which means InfiniteWatch won't be able to generate meaningful insights from your sessions. Target only the elements that contain sensitive data.
# HTML / CDN
Source: https://docs.infinitewatch.ai/docs/sdks/html
Add InfiniteWatch session replay to any website with a single script tag
## Overview
The simplest way to add InfiniteWatch to your website — just drop in a script tag. No build tools, no npm install, no configuration files.
## Installation
Add the following script tag at the end of your HTML `` section, before the closing `` tag:
```html theme={null}
```
Replace `YOUR_ORGANIZATION_ID` with your actual organization ID. You can find this in your [InfiniteWatch dashboard](https://app.infinitewatch.ai/dashboard/settings).
That's it — the script loads asynchronously and starts recording sessions automatically.
## Using Google Tag Manager
If you prefer to load InfiniteWatch via Google Tag Manager, use this snippet instead:
```html theme={null}
```
## Identify Users
After the tracker is initialized, you can associate sessions with specific users using the `identify()` method:
```javascript theme={null}
InfiniteWatch.identify({
external_id: 'user-12345'
});
```
With additional user information:
```javascript theme={null}
InfiniteWatch.identify({
external_id: 'user-12345',
email: 'user@example.com',
full_name: 'John Doe',
metadata: {
plan: 'premium',
signup_date: '2024-01-15'
}
});
```
Call `identify()` after the user logs in. The `external_id` is persisted in a cookie so it carries across page reloads and sessions.
## How It Works
Once the script is added, InfiniteWatch will automatically:
* Record user sessions and interactions
* Capture DOM events, mouse movements, and clicks
* Generate web insights data
* Send data to your InfiniteWatch dashboard
The script loads asynchronously, so it won't block your page load.
# Next.js
Source: https://docs.infinitewatch.ai/docs/sdks/nextjs
Add InfiniteWatch session replay to your Next.js application
## Overview
The `@infinitewatch/next` SDK provides a Next.js-compatible provider component that works with the App Router and Server Components.
## Step 1: Installation
```bash npm theme={null}
npm install @infinitewatch/next
```
```bash pnpm theme={null}
pnpm add @infinitewatch/next
```
```bash yarn theme={null}
yarn add @infinitewatch/next
```
## Step 2: Environment Variables
Add to your `.env.local` file:
```bash theme={null}
NEXT_PUBLIC_INFINITEWATCH_ORG_ID=YOUR_ORGANIZATION_ID
```
Replace `YOUR_ORGANIZATION_ID` with your actual organization ID. You can find this in your [InfiniteWatch dashboard](https://app.infinitewatch.ai/dashboard/settings).
## Step 3: Basic Setup
Create a providers file and wrap your app layout.
First, create `app/providers.tsx`:
```tsx theme={null}
'use client';
import { InfiniteWatchProvider } from '@infinitewatch/next';
export function Providers({ children }: { children: React.ReactNode }) {
return (
{children}
);
}
```
Then use it in `app/layout.tsx`:
```tsx theme={null}
import { Providers } from './providers';
export default function RootLayout({
children,
}: {
children: React.ReactNode;
}) {
return (
{children}
);
}
```
The `InfiniteWatchProvider` must be inside a `'use client'` component since it uses browser APIs. That's why we put it in a separate providers file.
## Identify Users
After the provider is set up, you can associate sessions with specific users:
```javascript theme={null}
InfiniteWatch.identify({
external_id: 'user-12345',
email: 'user@example.com',
full_name: 'John Doe',
metadata: {
plan: 'premium',
signup_date: '2024-01-15'
}
});
```
Call `identify()` after the user logs in. The `external_id` is persisted in a cookie so it carries across page reloads and sessions.
# React
Source: https://docs.infinitewatch.ai/docs/sdks/react
Add InfiniteWatch session replay to your React application
## Overview
The `@infinitewatch/react` SDK provides a React provider component that wraps your app and automatically handles session recording.
## Step 1: Installation
```bash npm theme={null}
npm install @infinitewatch/react
```
```bash pnpm theme={null}
pnpm add @infinitewatch/react
```
```bash yarn theme={null}
yarn add @infinitewatch/react
```
## Step 2: Environment Variables
Create an environment file with your organization ID.
Add to your `.env` file:
```bash theme={null}
VITE_INFINITEWATCH_ORG_ID=YOUR_ORGANIZATION_ID
```
Add to your `.env` file:
```bash theme={null}
REACT_APP_INFINITEWATCH_ORG_ID=YOUR_ORGANIZATION_ID
```
Replace `YOUR_ORGANIZATION_ID` with your actual organization ID. You can find this in your [InfiniteWatch dashboard](https://app.infinitewatch.ai/dashboard/settings).
## Step 3: Basic Setup
Wrap your app with the `InfiniteWatchProvider` for automatic tracking.
```tsx theme={null}
import { InfiniteWatchProvider } from '@infinitewatch/react';
function App() {
return (
{/* Your entire app goes here */}
);
}
export default App;
```
```tsx theme={null}
import { InfiniteWatchProvider } from '@infinitewatch/react';
function App() {
return (
{/* Your entire app goes here */}
);
}
export default App;
```
The provider should wrap your entire app so all pages are tracked.
## Identify Users
After the provider is set up, you can associate sessions with specific users:
```javascript theme={null}
InfiniteWatch.identify({
external_id: 'user-12345',
email: 'user@example.com',
full_name: 'John Doe',
metadata: {
plan: 'premium',
signup_date: '2024-01-15'
}
});
```
Call `identify()` after the user logs in. The `external_id` is persisted in a cookie so it carries across page reloads and sessions.
# Vue.js
Source: https://docs.infinitewatch.ai/docs/sdks/vue
Add InfiniteWatch session replay to your Vue application
## Overview
The `@infinitewatch/vue` SDK provides a Vue plugin that integrates session recording into your Vue app.
## Step 1: Installation
```bash npm theme={null}
npm install @infinitewatch/vue
```
```bash pnpm theme={null}
pnpm add @infinitewatch/vue
```
```bash yarn theme={null}
yarn add @infinitewatch/vue
```
## Step 2: Environment Variables
Add to your `.env` file:
```bash theme={null}
VITE_INFINITEWATCH_ORG_ID=YOUR_ORGANIZATION_ID
```
Replace `YOUR_ORGANIZATION_ID` with your actual organization ID. You can find this in your [InfiniteWatch dashboard](https://app.infinitewatch.ai/dashboard/settings).
## Step 3: Basic Setup
Register the plugin in your main entry file (e.g. `main.ts`):
```typescript theme={null}
import { createApp } from 'vue';
import { InfiniteWatchPlugin } from '@infinitewatch/vue';
import App from './App.vue';
const app = createApp(App);
app.use(InfiniteWatchPlugin, {
organizationId: import.meta.env.VITE_INFINITEWATCH_ORG_ID,
});
app.mount('#app');
```
## Identify Users
After the plugin is set up, you can associate sessions with specific users:
```javascript theme={null}
InfiniteWatch.identify({
external_id: 'user-12345',
email: 'user@example.com',
full_name: 'John Doe',
metadata: {
plan: 'premium',
signup_date: '2024-01-15'
}
});
```
Call `identify()` after the user logs in. The `external_id` is persisted in a cookie so it carries across page reloads and sessions.