From glean-pack
Installs and configures Glean Indexing and Client API tokens for enterprise search, with SDK setup and verification in Node.js/TypeScript.
npx claudepluginhub jeremylongshore/claude-code-plugins-plus-skills --plugin glean-packThis skill is limited to using the following tools:
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`.
Provides typed TypeScript client for Glean API with batch indexing, pagination, search, and error handling. Useful for production Glean integrations.
Searches and fetches Glean developer docs via MCP tools for APIs, SDKs (Python/JS), MCP config, authentication, indexing, and integrations.
Installs Algolia JavaScript v5 client, configures API keys via env vars, and initializes backend/frontend clients in Node.js/TypeScript projects.
Share bugs, ideas, or general feedback.
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.
company-be.glean.com)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 |
# .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
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 | 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 |
After auth, proceed to glean-hello-world for your first index and search.