Claude-code-plugins-plus glean-install-auth

install
source · Clone the upstream repo
git clone https://github.com/jeremylongshore/claude-code-plugins-plus-skills
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/jeremylongshore/claude-code-plugins-plus-skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/plugins/saas-packs/glean-pack/skills/glean-install-auth" ~/.claude/skills/jeremylongshore-claude-code-plugins-plus-glean-install-auth && rm -rf "$T"
manifest: plugins/saas-packs/glean-pack/skills/glean-install-auth/SKILL.md
source content

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 TypePurposeRequired Header
Indexing API tokenPush documents into search index
Authorization: Bearer <token>
Client API tokenSearch, 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

ErrorCodeCauseSolution
Unauthorized
401Invalid tokenRegenerate in Admin > API Tokens
Forbidden
403Token lacks scopeUse correct token type (indexing vs client)
Not Found
404Wrong domainVerify GLEAN_DOMAIN includes
-be
suffix

Resources

Next Steps

After auth, proceed to

glean-hello-world
for your first index and search.