Agent Skills: Glean Install & Auth

|

UncategorizedID: jeremylongshore/claude-code-plugins-plus-skills/glean-install-auth

Install this agent skill to your local

pnpm dlx add-skill https://github.com/jeremylongshore/claude-code-plugins-plus-skills/tree/HEAD/plugins/saas-packs/glean-pack/skills/glean-install-auth

Skill Files

Browse the full folder contents for glean-install-auth.

Download Skill

Loading file tree…

plugins/saas-packs/glean-pack/skills/glean-install-auth/SKILL.md

Skill Metadata

Name
glean-install-auth
Description
|

Glean Install & Auth

Overview

Configure Glean API authentication for enterprise search and knowledge management. Glean has two APIs: the Indexing API (push content into search) and the Client API (search and retrieve). Each uses separate tokens. Base URL: https://<domain>-be.glean.com/api.

Prerequisites

  • Glean enterprise account with admin access
  • API token from Glean Admin > API Tokens
  • Your Glean deployment domain (e.g., company-be.glean.com)

Instructions

Step 1: Obtain API Tokens

Navigate to Glean Admin Console > Settings > API:

| Token Type | Purpose | Required Header | |------------|---------|----------------| | Indexing API token | Push documents into search index | Authorization: Bearer <token> | | Client API token | Search, chat, user-scoped queries | Authorization: Bearer <token> + X-Glean-Auth-Type: BEARER |

Step 2: Configure Environment Variables

# .env (NEVER commit)
GLEAN_DOMAIN=company-be.glean.com
GLEAN_INDEXING_TOKEN=glean_idx_...
GLEAN_CLIENT_TOKEN=glean_cli_...
GLEAN_DATASOURCE=custom_app  # Your custom datasource name

Step 3: Install SDK and Verify

npm install @anthropic-ai/glean-indexing-api-client  # Or use fetch directly
const GLEAN_BASE = `https://${process.env.GLEAN_DOMAIN}/api`;

// Verify indexing API access
async function verifyIndexingAccess() {
  const res = await fetch(`${GLEAN_BASE}/index/v1/getdatasourceconfig`, {
    method: 'POST',
    headers: {
      'Authorization': `Bearer ${process.env.GLEAN_INDEXING_TOKEN}`,
      'Content-Type': 'application/json',
    },
    body: JSON.stringify({ datasource: process.env.GLEAN_DATASOURCE }),
  });
  const config = await res.json();
  console.log(`Connected. Datasource: ${config.name}`);
}

// Verify client API access
async function verifySearchAccess() {
  const res = await fetch(`${GLEAN_BASE}/client/v1/search`, {
    method: 'POST',
    headers: {
      'Authorization': `Bearer ${process.env.GLEAN_CLIENT_TOKEN}`,
      'X-Glean-Auth-Type': 'BEARER',
      'Content-Type': 'application/json',
    },
    body: JSON.stringify({ query: 'test', pageSize: 1 }),
  });
  const results = await res.json();
  console.log(`Search works. Found ${results.results?.length ?? 0} results.`);
}

Error Handling

| Error | Code | Cause | Solution | |-------|------|-------|----------| | Unauthorized | 401 | Invalid token | Regenerate in Admin > API Tokens | | Forbidden | 403 | Token lacks scope | Use correct token type (indexing vs client) | | Not Found | 404 | Wrong domain | Verify GLEAN_DOMAIN includes -be suffix |

Resources

Next Steps

After auth, proceed to glean-hello-world for your first index and search.