<!-- AUTO-GENERATED by export-skills.py — DO NOT EDIT -->
---
applyTo: '**/*.md'
---

# agentspace

> Google Agentspace patterns for enterprise AI search and agents. Use when building unified search across 100+ enterprise connectors (SharePoint, Confluence, Jira, Salesforce, ServiceNow), identity-aware access, or custom Agentspace agents.

# Google Agentspace

Build enterprise AI search and agent experiences across 100+ third-party data sources using Google Agentspace.

## When to Use

- Building unified enterprise search across SharePoint, Confluence, Jira, Salesforce, ServiceNow, and more
- Creating custom AI agents within Agentspace for specific business domains (HR, IT, Finance)
- Implementing identity-aware search that respects source system ACLs
- Deploying NotebookLM Enterprise for document analysis at scale

## Pre-Built Enterprise Connectors (100+)

| Category | Connectors |
|---|---|
| **Microsoft** | SharePoint Online, OneDrive, Outlook/Exchange, Teams, Dynamics 365 |
| **Atlassian** | Confluence, Jira |
| **CRM** | Salesforce (Knowledge, Cases, custom objects) |
| **ITSM** | ServiceNow (Incidents, Changes, Knowledge) |
| **Google** | Workspace (Drive, Gmail, Calendar, Sites, Groups) |
| **Dev Tools** | GitHub, GitLab |
| **Storage** | Box, Dropbox, Cloud Storage, Amazon S3, Azure Blob |
| **Databases** | BigQuery, Cloud SQL, AlloyDB, Spanner |
| **Collaboration** | Slack, Notion |
| **Custom** | REST API connector, JDBC connector, web crawlers |

## Patterns

### 1. Create Data Store with Connector

```python
from google.cloud import discoveryengine_v1 as discoveryengine

def create_confluence_data_store(
    project_id: str, location: str, data_store_id: str,
    confluence_url: str, space_keys: list[str],
):
    """Create a data store connected to Confluence."""
    client = discoveryengine.DataStoreServiceClient()

    data_store = discoveryengine.DataStore(
        display_name="Confluence Knowledge Base",
        industry_vertical=discoveryengine.IndustryVertical.GENERIC,
        solution_types=[discoveryengine.SolutionType.SOLUTION_TYPE_SEARCH],
        content_config=discoveryengine.DataStore.ContentConfig.CONTENT_REQUIRED,
    )

    operation = client.create_data_store(
        parent=f"projects/{project_id}/locations/{location}/collections/default_collection",
        data_store=data_store,
        data_store_id=data_store_id,
    )
    return operation.result()
```

### 2. Search Across Enterprise Sources

```python
from google.cloud import discoveryengine_v1 as discoveryengine

def search_enterprise(project_id: str, location: str, engine_id: str, query: str) -> list[dict]:
    """Search across all connected enterprise sources."""
    client = discoveryengine.SearchServiceClient()

    request = discoveryengine.SearchRequest(
        serving_config=f"projects/{project_id}/locations/{location}/collections/default_collection/engines/{engine_id}/servingConfigs/default_search",
        query=query,
        page_size=10,
        content_search_spec=discoveryengine.SearchRequest.ContentSearchSpec(
            snippet_spec=discoveryengine.SearchRequest.ContentSearchSpec.SnippetSpec(
                return_snippet=True,
            ),
            summary_spec=discoveryengine.SearchRequest.ContentSearchSpec.SummarySpec(
                summary_result_count=5,
                include_citations=True,
                model_spec=discoveryengine.SearchRequest.ContentSearchSpec.SummarySpec.ModelSpec(
                    version="gemini-1.5-flash-002/answer_gen/v2",
                ),
            ),
        ),
    )

    response = client.search(request)
    results = []
    for result in response.results:
        doc = result.document
        results.append({
            "title": doc.derived_struct_data.get("title", ""),
            "snippet": doc.derived_struct_data.get("snippets", [{}])[0].get("snippet", ""),
            "link": doc.derived_struct_data.get("link", ""),
            "source": doc.derived_struct_data.get("source_type", ""),
        })
    return results
```

### 3. Custom Agentspace Agent

Agentspace allows creating domain-specific agents that combine search + actions:

```
IT Help Desk Agent:
  Data Sources: ServiceNow KB, Confluence IT docs, Jira known issues
  Actions: Create ServiceNow ticket, Escalate to on-call
  Identity: Uses Google Workspace SSO, respects ServiceNow ACLs

HR Benefits Agent:
  Data Sources: SharePoint HR policies, Workday benefits docs
  Actions: Open HR case, Schedule benefits consultation
  Identity: Uses Google Workspace SSO, scoped to HR data only
```

### 4. Identity-Aware Access Control

Agentspace automatically respects source system permissions:

- **Google Workspace**: Uses Google Workspace ACLs (Drive sharing, Gmail access)
- **SharePoint**: Maps Azure AD groups to search results filtering
- **Confluence**: Respects Confluence space and page permissions
- **Salesforce**: Uses Salesforce profile and sharing rules

No additional configuration needed -- the connector framework handles ACL passthrough.

## Key Capabilities

- **NotebookLM Enterprise**: Embedded document analysis with Audio Overviews
- **Multimodal Search**: Text, image, and document search across all connected sources
- **Actions**: Agents can create Jira tickets, update ServiceNow records, send Slack messages
- **Grounding**: All responses cite source documents with links
- **Admin Console**: Central management of connectors, agents, and access policies

## Anti-Patterns

- Connecting all data sources without access review -- audit ACLs before enabling connectors
- Using Agentspace for real-time transactional data -- it's optimized for search, not OLTP
- Skipping connector sync schedule configuration -- stale data leads to poor answers
- Not configuring data exclusions -- exclude sensitive folders/spaces from indexing

## References

- [Google Agentspace](https://cloud.google.com/agentspace)
- [Agentspace Connectors](https://cloud.google.com/agentspace/docs/connect-data-sources)
- [Vertex AI Search](https://cloud.google.com/generative-ai-app-builder/docs/introduction)
